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.
Bu yazı yorumlara kapalı.