2015-04-04 63 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

相關問題