简单动画问题 Xcode 7 Swift

Simple Animation Issue Xcode 7 Swift

我似乎无法在 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 制作动画。

试试这个:

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)
})

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

在同一范围内简单地链接 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 被调用并不一定意味着视图会立即显示,这可能会耽误您的时间(尤其是当您的视图在内存和资源方面变得更加复杂时)。