2015-04-04 65 views
0

我想动画增加视图的宽度。它在第一个/基本视图控制器中工作正常。但它在其他视图控制器中不起作用。 首先我装第二视图控制器:动画不能在某些视图控制器中工作

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

viewDidLoad在视图控制器视图调整到当前显示大小之前调用。如果您在viewDidLoad中查看VC的contentView.frame,您会发现它是XIB/Storyboard中定义的大小,而不是正确的大小。

你或许应该把你的动画viewWillAppear:

然而,viewWillAppear中:被称作每个VC的视图显示,不只是第一次的时候,所以你需要允许这一点。

另一个考虑:如果你使用AutoLayout,你不应该操纵视图框架。相反,您应该设置网点来限制这些视图,并更改这些约束的值。

+0

感谢它运作良好。 – 2015-04-04 18:17:14

相关问题