ios - كيف يمكنك جعل الرسوم المتحركة يهز لزر باستخدام سويفت 3




animation swift3 (2)

لدي وظيفة أن يحصل يسمى كل 3 ثوان. كيف يمكنني جعل الرسوم المتحركة تهتز للزر الذي يهز جنبا إلى جنب.

func shakeButton() {
    if opened == false {
        //Shake Animation
    }
}

إذا فهمت لك بشكل صحيح، حاول هذا على هزة الرسوم المتحركة. ببساطة استخدام هذه الطريقة في الفئة الفرعية أويبوتون الخاص بك

class CustomButton: UIButton {

    func shake() {
        let animation = CAKeyframeAnimation(keyPath: "transform.translation.x")
        animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
        animation.duration = 0.6
        animation.values = [-20.0, 20.0, -20.0, 20.0, -10.0, 10.0, -5.0, 5.0, 0.0 ]
        layer.add(animation, forKey: "shake")
    }
}

ثم قمت بإنشاء CustomButton في مكان ما في التعليمات البرمجية أو القصة المصورة / زيب والدعوة myButton.shake()

يمكنك ببساطة اعتماد هذا الحل على الاحتياجات الخاصة بك

أوبد: لدي مثال تحرير من تركيبها بالضبط الاحتياجات الخاصة بك

UPD2: حل واحد آخر مجرد إنشاء ملحق UIButton

extension UIButton {

    func shake() {
        let animation = CAKeyframeAnimation(keyPath: "transform.translation.x")
        animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
        animation.duration = 0.6
        animation.values = [-20.0, 20.0, -20.0, 20.0, -10.0, 10.0, -5.0, 5.0, 0.0 ]
        layer.add(animation, forKey: "shake")
    }

}

أنس استخدام لك زر رد الفعل:

@IBAction func shake(_ sender: UIButton) {
    sender.shake()
}

من الصعب حقا معرفة ما تبحث عنه هنا، بدون نموذج جيف أو شيء ما. ولكن إذا كان ما أعتقد أنه هو، حيث يتحرك زر من مركز أولي، إلى مركز جديد قليلا إلى اليسار، إلى مركز جديد قليلا إلى اليمين، وربما مرة أخرى أو اثنين قبل أن تركز مرة أخرى يجب أن ننظر إلى إيفيو ل أنيماتيكيرامس (ويثدوراتيون: ديلاي: أوبتيونس: أنيماشيونس: كومبليتيون :) ميثود.





xcode8