İçeriğe geç

CABasicAnimation kullanımı

İOS

Merhabalar bu yazımda CoreGraphics animasyon yaratıcı sınıflarından CABasicAnimation‘dan bahsedeceğim.

Oldukça yararlı ve kullanışlı bir sınıf ve performans açısından’da hızlı. Tüm nesne sınıflarının layerlerine eklenmekte.

Performans bakımından CoreGraphics‘in GPU katmanına olan yakınlığını aşağıdaki tablodan görebilirsiniz.

Daha önceki yazılarımda kullandığımız CALayer katmanlarıyla beraber oldukça hızlı tepkiler ve kullanışlı kodlar yazabilirsiniz.

Aşağıdaki verdiğim örnekte nasıl kullanılır bunu görebilirsiniz.

İlk olarak bir daire çizelim:

     let path = UIBezierPath(ovalInRect: CGRect(x: 70, y: 70, width: 100, height: 100))
        circleLayer = CAShapeLayer()
        circleLayer.frame = path.bounds
        circleLayer.path = path.CGPath
        circleLayer.fillColor = UIColor.redColor().CGColor
        
        view.layer.addSublayer(circleLayer)

Daha sonra çizdiğimiz daireye aşağıdaki animasyonları ekleyelim:

      var rectPath: UIBezierPath {
            
            return UIBezierPath(rect: CGRect(x: 50, y: 50, width: 120, height: 120))
            
        }
        
        let act = CABasicAnimation(keyPath: "path")
        act.fromValue = circleLayer.path
        act.toValue = rectPath.CGPath
        act.duration = 1.0
        act.fillMode = kCAFillModeForwards
        act.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
        act.beginTime = 0.0
   
        let rotationAnimation: CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
        rotationAnimation.toValue = CGFloat(M_PI * 2)
        rotationAnimation.duration = 1.0
        rotationAnimation.beginTime = act.beginTime + act.duration
        
        let group = CAAnimationGroup()
        group.animations = [act,rotationAnimation]
        group.removedOnCompletion = false
        group.duration = 2.0
        group.repeatCount = 1
       
        circleLayer.addAnimation(group, forKey: nil)

Bu animasyon daireyi kareye dönüştürüp daha sonra 360 derece döndürüp tekrar daire haaline getirmekte.

Kategori:iOS

Bu yazı yorumlara kapalı.

Copyright © 2022 Kenan Atmaca