【问题标题】:Simple Animation Issue Xcode 7 Swift简单动画问题 Xcode 7 Swift
【发布时间】:2015-10-24 09:14:31
【问题描述】:

我似乎无法在 Xcode 中制作简单的淡入淡出动画。

我想要做的就是在 viewDidLoad 后 2 秒内让图像淡出(效果很好),但是一旦我为淡出动画添加代码,图像就不会最初隐藏。

这是我的代码:

image.alpha = 0


UIView.animateWithDuration(1, delay: 2, options: [], animations: { () -> Void in
        self.image.alpha = 1
        }, completion: nil)

    UIView.animateWithDuration(1, delay: 3, options: [], animations: { () -> Void in
        self.image.alpha = 0
        }, completion: nil)

我正在为动画使用 UIImages。

【问题讨论】:

    标签: ios xcode swift animation uiimage


    【解决方案1】:

    试试这个:

    UIView.animateWithDuration(1, delay: 2, options: [], animations: { () -> Void in
        self.image.alpha = 1
        }, completion: {
            UIView.animateWithDuration(1, delay: 3, options: [], animations: { () -> Void in
                self.image.alpha = 0
            }, completion: nil)
    })
    

    简单规则:等待一个动画完成,然后再开始另一个动画。您正在背靠背执行它们,导致第一个处于无效状态。

    【讨论】:

      【解决方案2】:

      像这样在同一范围内简单地链接UIView.animateWithDuration 动画是有问题的。实现您描述的效果的一种方法是在第一个动画的完成块中调用第二个动画,就像这样

      self.image.alpha = 0
      
      UIView.animateWithDuration(1, delay: 2, options: [], animations: { () -> Void in
          self.image.alpha = 1
          }, completion: { finished in
      
              UIView.animateWithDuration(1, delay: 0, options: [], animations: { () -> Void in
              self.image.alpha = 0
              }, completion: nil)
      })
      

      编辑:这与您描述的问题没有直接关系,只是根据您的问题的措辞添加一些一般性建议:通常最好在 viewWillAppearviewDidAppear 视图控制器的方法。 viewDidLoad 被调用并不一定意味着视图会立即显示,这可能会耽误您的时间(尤其是当您的视图在内存和资源方面变得更加复杂时)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-04
        • 1970-01-01
        • 2022-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多