2015-08-08 83 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!)})