简单动画问题 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)
})
编辑:这与您描述的问题没有直接关系,只是根据您问题的措辞添加一些一般性建议:通常最好在 viewWillAppear
或 viewDidAppear
视图控制器的方法。 viewDidLoad
被调用并不一定意味着视图会立即显示,这可能会耽误您的时间(尤其是当您的视图在内存和资源方面变得更加复杂时)。
我似乎无法在 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)
})
编辑:这与您描述的问题没有直接关系,只是根据您问题的措辞添加一些一般性建议:通常最好在 viewWillAppear
或 viewDidAppear
视图控制器的方法。 viewDidLoad
被调用并不一定意味着视图会立即显示,这可能会耽误您的时间(尤其是当您的视图在内存和资源方面变得更加复杂时)。