繁体   English   中英

简单动画问题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并不一定意味着立即显示该视图,这可能会浪费您的时间(特别是如果您的视图在内存和资源方面变得更加复杂)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM