动画在某些视图控制器中不起作用

时间:2015-04-04 16:48:39

标签: ios swift

我正在尝试动画增加视图的宽度。它在第一个/基本视图控制器中工作正常。但它在其他视图控制器中不起作用。 首先我将第二个视图控制器加载为:

let vc = SecondViewController(nibName: "SecondViewController", bundle: nil)
    self.presentViewController(vc, animated: true, completion: nil)

然后在我使用的viewDidLoad方法中:

        UIView.animateWithDuration(10.0, delay:4, options: nil , animations: {

               self.progressBarView.frame = CGRectMake(self.progressBarView.frame.origin.x, self.progressBarView.frame.origin.y, 367, self.progressBarView.frame.size.height)

        }, completion: nil)

此动画在启动时加载的第一个视图控制器中工作正常但在第二个视图控制器中不起作用,但视图框设置为没有动画。在第二视图控制器中看起来既没有工作延迟也没有动画的持续时间。

1 个答案:

答案 0 :(得分:1)

在视图控制器的视图大小调整为当前显示大小之前调用

viewDidLoad。如果你在viewDidLoad中查看VC的contentView.frame,你会发现它是在XIB / Storyboard中定义的大小,而不是正确的大小。

您应该将动画放在viewWillAppear:

然而,每次显示VC的视图时都会调用viewWillAppear:,而不仅仅是第一次,所以你需要允许它。

另一个考虑因素:如果您正在使用AutoLayout,则不应该操纵视图帧。相反,您应该为这些视图的约束设置出口,并更改这些约束的值。