读ColorDemo源码学习Swift协议

刘洪宝老师的文章Swift进阶-面向协议看了github的代码,学习了一下, 我添加自己的一些注释。

在Protocol.swift中

定义协议
protocol HexColor {}

扩展协议, 添加一个类方法

extension HexColor where Self: UIColor{ //使用where语句来判断, 当Class 是UIColor的子类时,可以使用协议中的该方法
    /**
     16进制字符串 -> UIColor
     
     - parameter hexString: 16进制颜色值字符串
     
     - returns: UIColor?
     */
    
    static func hexString(hexString: String, alpha: CGFloat = 1.0) -> UIColor?{

举个例子(我自己添加的扩展),下面调用的时候会解释

extension HexColor where Self: UIView { //使用where语句来判断, 当Class 是UIView的子类时,可以使用协议中的该方法
    static func testMethod() -> Void {
        
    }
}

在Config.swift中

public class AppColor: UIColor, HexColor{ // public 类AppColor, UIColor的子类,遵守协议HexColor
    // 类方法,使用class修饰或static
    class func backgroundColor() -> UIColor{
        return self.hexString("#333333", alpha: 0.7)! // 直接调用协议中的hexString类方法
    }
}

在这个类里调用我刚才写的扩展中的方法会报错,见上面代码段中注释

QQ20160617-0@2x.png

文中还提到了只在单独的文件中使用的颜色可以写在单独的文件中(比如在ViewController.swift)

private class HomeColor: UIColor, HexColor{ // private类,只作用于当前文件
    
    class func titleColor() -> UIColor{
        
        return self.redColor()
    }
    class func subTitleColor() -> UIColor{
        
        return self.hexString("#333333", alpha: 0.7)!
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 主持人 赵亮 研究方法:准实验研究,个案法 实验目的:验证聆听法的效果 实验对象:2017级本科英语教育401、4...
    火鱼鳗酥阅读 312评论 0 1
  • 菩提勇者阅读 152评论 2 2
  • 刚刚路过那家网吧 里面又破又旧 零星坐着几个无业游民似的人 平安夜那晚 你一个人应该很害怕吧 那种孤独与失落 不该...
    记忆中的猫阅读 207评论 0 1
  • 1.抽过烟,喝过酒,爱过人渣,信过狗 2.我的世界容不得别人指手画脚 3.别跟姐装酷,姐零下十几度 4.我可以笑着...
    清茶青瓷倾城歌阅读 222评论 0 0