swift面向协议编程(1)

声明一个Shake动画的协议

protocol Shakeable {
}

给协议拓展一个shake的方法


extension Shakeable where Self: UIView {
    
    func shake() {
        
        
        let animation = CABasicAnimation(keyPath: "position")
        animation.duration = 0.05
        animation.repeatCount = 5
        animation.autoreverses = true
        animation.fromValue = NSValue(cgPoint: CGPoint(x: center.x - 4, y: center.y - 4))
        animation.toValue = NSValue(cgPoint: CGPoint(x: center.x + 4, y: center.y + 4))
        layer.add(animation, forKey: "position")
        
        
    }
}

写一个自定一个button 遵循协议


class ActionButton: UIButton,Shakeable {
}

之后创建ActionButton 就拥有了shake事件 ,如果其他控件也需要用到这个shake 只需要遵循shakeable协议即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,167评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,276评论 4 61
  • 美国哈佛大学是世界有名的大学,我对它的了解一直仅仅局限于对它名气上的了解,但秦王会商学院的热身课却让我了解了哈...
    叶滢YeYing阅读 10,978评论 0 4
  • 我现在不是自由职业者。如果将来有一天,我成为一个自由职业者,那么,我想,我应该会较好地自我管控。 我很羡慕自由职业...
    德合阅读 276评论 0 0
  • 当思念时,会想写点什么 思绪里总有着太多的顾及,只是忽略了自己的感受吧! 随着一部电影的完结,跟着感动,流泪,又想...
    雷云玲阅读 162评论 0 0