Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 新屏幕尺寸的动画视图问题_Ios_Uiview_Swift_Animatewithduration - Fatal编程技术网

Ios 新屏幕尺寸的动画视图问题

Ios 新屏幕尺寸的动画视图问题,ios,uiview,swift,animatewithduration,Ios,Uiview,Swift,Animatewithduration,在我的应用程序中,我的主视图控制器中有两个视图。一个是用于输入有关预算的详细信息。另一个用于查看预算的当前状态 在条目视图上点击enter按钮时,该视图向下滑动以显示当前预算视图 在VIEWWILLEXPENCE中,如果按下enter按钮但视图未移动,则会执行一些代码(当应用程序完全关闭并重新打开时会发生这种情况) “重置”按钮与“输入”按钮相反,并将视图向后滑动 问题是,有时点击重置按钮时,视图开始向上滑动,但随后在视图底部附近停止。在我将我的应用程序升级到iphone6和iphone6plu

在我的应用程序中,我的主视图控制器中有两个视图。一个是用于输入有关预算的详细信息。另一个用于查看预算的当前状态

在条目视图上点击enter按钮时,该视图向下滑动以显示当前预算视图

在VIEWWILLEXPENCE中,如果按下enter按钮但视图未移动,则会执行一些代码(当应用程序完全关闭并重新打开时会发生这种情况)

“重置”按钮与“输入”按钮相反,并将视图向后滑动

问题是,有时点击重置按钮时,视图开始向上滑动,但随后在视图底部附近停止。在我将我的应用程序升级到iphone6和iphone6plus上之前,这一切都很好,所以我认为我的坐标计算有问题。我只是还没弄明白。下面是它被卡住时的样子:

重置按钮:

    self.budgetEntryView.hidden = false
    resetButtonNav.enabled = false

    UIView.animateWithDuration(0.3, delay: 0, options: .CurveLinear, animations: {
        self.budgetEntryView.center = CGPointMake(self.budgetEntryView.center.x, self.budgetEntryView.center.y - 500)
        }, completion: { (finished:Bool) in
            self.budgetDisplayView.hidden = true
视图将显示:

        if enterButtonTapped == true && self.budgetEntryView.center.y != 784 {

        UIView.animateWithDuration(0.3, delay: 0, options: .CurveLinear, animations: {
            self.budgetEntryView.center = CGPointMake(self.budgetEntryView.center.x, self.budgetEntryView.center.y + 500)
            }, completion: { (finished:Bool) in self.budgetEntryView.hidden = true })
        }
输入按钮:

        UIView.animateWithDuration(0.3, delay: 0, options: .CurveLinear, animations: {
        self.budgetEntryView.center = CGPointMake(self.budgetEntryView.center.x, self.budgetEntryView.center.y + 500)
        }, completion: { (finished:Bool) in self.budgetEntryView.hidden = true })

当我按照建议使用println查找问题时,修复非常简单

基本上,我只需在新的屏幕尺寸上添加视图所处的坐标,如下所示:

    if enterButtonTapped == true && self.budgetEntryView.center.y != 784 && self.budgetEntryView.center.y != 868 && self.budgetEntryView.center.y != 740 && self.budgetEntryView.center.y != 833.5 {

你使用自动布局吗?如果是这样,您可能会考虑设置约束的动画,而不是视图的宽度/高度/位置。否。我很早就尝试过使用自动布局,但我真的不喜欢它。我在今天的小部件中使用它,因为它是一个简单得多的UI,但我想避免在主应用程序中使用它。代码中是否没有任何明显的错误会导致您看到的问题?对不起,我看不到明显的问题。在代码中放置几个println()语句,以检查中心坐标是否发生了变化。更好地使用
CGPoint(…)
而不是
CGPointMake(…)
Ah通过使用println,我发现在某个点上它会像应该的那样跃升到868,达到1368。谢谢你的帮助。我会继续测试,看看是否能找到问题。