İçeriğe geç

UIViewPropertyAnimator kullanımı

Merhabalar bu yazımda İOS 10 ile birlikte eklenen yeni animasyon yaratma sınıfı olan UIViewPropertyAnimator‘den bahsedip kullanımına örnek vereceğim.

Kullanmakta olduğumuz animate,dynamicanimator gibi animasyon yaratıcılarını kullanmaya devam ediyoruz ancak bu yeni sınıfın güzel bir farkı var.

Bu fark dilediğiniz zaman animasyonu durdurabilir, geri sarabilir ve dilediğiniz yerden başlatabilirsiniz veya parmak hareketlerinizle animasyonun tüm hareket sürecini görsel olarak görebilirsiniz. Buda hayal gücünüzü kullanarak değişik,modern animasyonlar yaratmanızı sağlamakta.

Not: UIViewPropertyAnimator sınıfı İOS 10 ve üzeri versiyonlarda çalışmakta. Bu yüzden kodlarınıza @available(iOS 10.0, *) eklemeniz gerekli.

Aşağıda yazdığım örneği inceleyebilirsiniz.

 override func viewDidLoad() {
        super.viewDidLoad()
        
        box = UIView(frame: CGRect(x: 0, y: 40, width: 100, height: 100))
        box.backgroundColor = UIColor.orange
        view.addSubview(box)
        
        
        animator = UIViewPropertyAnimator(duration: 3.0, dampingRatio: 0.5, animations: {
            self.box.center.x = self.view.frame.size.width - 100
        })
        
        animator.addAnimations {
            self.box.alpha = 0.3
        }
        
        animator.startAnimation()
    }
    
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        
        if animator.isRunning {
            animator.pauseAnimation()
            animator.isReversed = true
            animator.startAnimation()
        }
        
       
    }

Bu yazdığım animasyon ile hareket halindeki kutu animasyon süresince ekrana bastığınız anda ilk başladığı yere doğru geri gider.

Animasyon sürecini ilerletmek yada geri sarmak için aşağıdaki fractionComplete değişkeni ile oynamanız gerek ancak animasyon start ile başlatılmamış olmalı.

animator.fractionComplete = CGFloat(sender.value)

Bir adet UISlider ile deneme yapabilirsiniz.

Animasyona fizik eylemleride eklenebilmekte.

  let dampingAnimator = UIViewPropertyAnimator(duration: 2, dampingRatio: 0.5) {
            self.box.center.x = self.view.frame.size.width - 100
        }
        
         dampingAnimator.startAnimation()

Dilerseniz animasyona kendi kontrol noktalarını belirleyip timing functionlar oluşturabilirsiniz yani easeIn veya easeOut yapısına benzer.

       let c1 = CGPoint(x: 0.7, y: 0.0)
        let c2 = CGPoint(x: 0.3, y: 1.0)
       
        let cubicTimingParameters: UITimingCurveProvider = UICubicTimingParameters(controlPoint1: c1, controlPoint2: c2)
        let timingProviderAnimator = UIViewPropertyAnimator(duration: 2.0, timingParameters: cubicTimingParameters)

        timingProviderAnimator.addAnimations {
           self.box.center.x = self.view.frame.size.width - 100
        }
        
        timingProviderAnimator.startAnimation()

 

Tarih:iOS

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca