动画不能在某些视图控制器中工作
问题描述:
我想动画增加视图的宽度。它在第一个/基本视图控制器中工作正常。但它在其他视图控制器中不起作用。 首先我装第二视图控制器:动画不能在某些视图控制器中工作
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)
这部动画作品在启动时加载的第一个视图控制器正常,但在第二视图不起作用控制器,但视图框架设置没有动画。它看起来既不工作延迟也不在第二视图控制器中的动画持续时间。
答
viewDidLoad
在视图控制器视图调整到当前显示大小之前调用。如果您在viewDidLoad中查看VC的contentView.frame,您会发现它是XIB/Storyboard中定义的大小,而不是正确的大小。
你或许应该把你的动画viewWillAppear:
然而,viewWillAppear中:被称作每个VC的视图显示,不只是第一次的时候,所以你需要允许这一点。
另一个考虑:如果你使用AutoLayout,你不应该操纵视图框架。相反,您应该设置网点来限制这些视图,并更改这些约束的值。
感谢它运作良好。 – 2015-04-04 18:17:14