How do I animate opacity using swift?

后端 未结 4 1912
没有蜡笔的小新
没有蜡笔的小新 2021-01-18 02:00

Could someone please provide me with an example of animating the opacity of an Image View in swift??

I couldn\'t even find a good example in objective c



        
相关标签:
4条回答
  • 2021-01-18 02:21

    If you need a simple animation, why not just use UIView's animateWithDuration:animations: method?

    imageView.alpha = 0
    UIView.animateWithDuration(1.0) {
            imageView.alpha = 1
    }
    
    0 讨论(0)
  • 2021-01-18 02:25

    If anyone is looking to use CABasicAnimation like OP had originally tried to do, one problem with his original code was he was using NSValue for the toValue. I switched it to NSNumber and it worked for me. Like this

        fadeToVisible.fromValue = NSNumber(float: 0.0)
    
    0 讨论(0)
  • 2021-01-18 02:29

    You can use this extension method (unless you want to modify the view's attributes itself):

    extension CALayer {
    
        func flash(duration: TimeInterval) -> Observable<Void> {
            let flash = CABasicAnimation(keyPath: "opacity")
    
            flash.fromValue = NSNumber(value: 0)
            flash.toValue = NSNumber(value: 1)
            flash.duration = duration
            flash.autoreverses = true
    
            removeAnimation(forKey: "flashAnimation")
            add(flash, forKey: "flashAnimation")
            opacity = 0     // Change the actual data value in the layer to the final value
        }
    }
    
    0 讨论(0)
  • 2021-01-18 02:41

    You can also write it like this:

    animation.fromValue = 0.0
    animation.toValue = 1.0
    

    The whole code should be like this:

    let animation = CABasicAnimation(#keyPath(CALayer.opacity))
    animation.fromValue = 0.0
    animation.toValue = 1.0
    animation.duration = 1.0
    animation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
    element.layer?.addAnimation(animation, forKey: "fade")
    
    0 讨论(0)
提交回复
热议问题