2015-08-08 168 views
0

我有這樣的代碼:添加一個子視圖

UIView.animateWithDuration(0.6, delay: 5.0, usingSpringWithDamping: 0.6, initialSpringVelocity: 3.0, options: nil, animations: { 

    self.view.addSubview(self.label!) 

},completion: nil) 

但它看起來並不像該標籤放置之後的5.0秒。在應用程序中,您可以立即看到它。

我該如何解決標籤放置5秒後的問題?

+0

使用dispatch_after而是如果你沒有任何動畫性能 – Ian

+0

添加一個子視圖不能設置動畫。無論是'dispatch_after'還是立即將其與'0'的'alpha'相加,然後在'animateWithDuration'塊內將'alpha'的變化動畫爲'1'。 – Rob

+0

+這將是更好的,你會添加視圖之前的動畫塊與0阿爾法和動畫塊中的阿爾法。 – shannoga

回答

2

請記住,使用animateWithDuration()(在MVC模式中) - 視圖動畫需要時間來執行,但模型會立即更改並且不會超過給定的持續時間。

使用此功能

func delay(delay:Double, closure:()->()) { 
     dispatch_after(
      dispatch_time(
       DISPATCH_TIME_NOW, 
       Int64(delay * Double(NSEC_PER_SEC)) 
      ), 
      dispatch_get_main_queue(), closure) 
} 

例如延遲一定時間後添加一個子視圖:

delay(5.0, closure: {self.view.addSubview(self.label!)})