专栏名称: bestswifter
iOS-基础技术
目录
相关文章推荐
91运营网  ·  短视频制作全流程.ppt ·  16 小时前  
91运营网  ·  抖音、小红书、视频号违禁词合集! ·  昨天  
运营研究社  ·  上门洗澡,月入五万,不丢人 ·  19 小时前  
运营研究社  ·  来了!《运营总监实战手册3.0》包邮免费领 ·  19 小时前  
51好读  ›  专栏  ›  bestswifter

当UIColor遇上Swift

bestswifter  · 掘金  ·  · 2018-01-03 03:17

正文

请到「今天看啥」查看全文


self .view.backgroundColor = "224 222 255" .ktcolor // 可以用空格分割 self .view.backgroundColor = "#DC143C" .ktcolor // 可以使用16进制数字 self .view.backgroundColor = "#dc143c" .ktcolor // 字母可以小写 self .view.backgroundColor = "SkyBlue" .ktcolor // 可以直接使用颜色的英文名字

虽然方案2不会对现有代码做修改,但它并不适用于所有系统类型,比如 NSDate NSURL 类型,出于这种考虑,demo中仅实现了关键逻辑。但这种实现方法最接近于理想的解决方案,一旦时机合适,我们就可以去掉丑陋的 as KtColor

拓展字符串

第一种方案通过拓展 String 类型实现,它添加了一个 ktcolor 计算属性,主要涉及到字符串的分割与处理,还有一些容错、判断等,这些就不是本文的重点了,如果有兴趣,读者可以通过阅读源码获得更加深入的了解。

这种方案的好处在于它还适用于 NSDate NSURL 等类型。比如,下面的代码可以通过类似的技术实现:

let date = "2016-02-17 24:00:00".ktdate
let url = "http://bestswifter.com".kturl

不过,方案一选择的技术注定了它没有再简化的空间了。如果不能显著的减少代码量,它就没有理由取代原生的方案。

字符串字面量

方案二和理想方案采用的都是同一个思路:“利用字符串字面量创建对象”。在我的 这篇文章 中对此有比较详细的解释。

简单来说,我们要做的只是为 UIColor 类型添加如下的拓展:

extension UIColor: StringLiteralConvertible






请到「今天看啥」查看全文


推荐文章
91运营网  ·  短视频制作全流程.ppt
16 小时前
运营研究社  ·  上门洗澡,月入五万,不丢人
19 小时前
运营研究社  ·  来了!《运营总监实战手册3.0》包邮免费领
19 小时前
老北京城  ·  北京的这个区居然这么牛!
8 年前
懂懂日记  ·  |上夏推荐:|中国人流调查|
8 年前
轻松读书人  ·  你才20多岁,真的不用害怕来不及
8 年前