一个链式的 UI 小尝试。。
Swift
结合 Snapkit 进行的 Swift 链式UI。
命名空间
Swift 有自己的命名空间。不像 Objective-C 一样,需要一个很繁琐的前缀。但是如果是系统的 API 呢,万一重名了呢?那么我们可以进行一个独特的命名空间。
看了Kingfisher 和 RxSwift 的源码,自己的命名空间并不难。无非就是定义一个结构体或类,并且定义一个命名的协议,之后进行扩展。还是上代码吧。
|
|
为了区分 static 调用,所以关于 static 的实例,采用了大写的 RD。
这里还出了一个小乌龙。原先,自己定义的 Struct 是这样的。
|
|
泛型用了 Base 表示。但是当用到 RxSwift 的时候,那些我自己实现协议的类,比如 UIColor 等。经常就会莫名其妙报错。而且很玄幻。
UI 小尝试
项目中使用了 Snapkit。但是每次都得很繁琐的写上几行代码。
|
|
于是就在想,能不能一行搞定呢。于是就有了一个小扩展。
|
|
使用这个扩展后,当在写 UI 布局的时候,就可以是下面这样了。
|
|
形式上,看上去也挺 OK 的。
Objective-C
上述用 Swift 以及 Snapkit 进行一个链式的 UI。那么用 Objective-C 呢。上述是使用了 Snapkit,那么 Objective-C 就选择用 Masonry 吧。
先上源码吧。
|
|
在使用上,是这样的。
|
|
比较遗憾的是,在使用 config 或者 makeConstraint 时,块的用法并不是很好的进行提示。
就这样吧。一个小尝试。一篇没有水分的 Blog。(逃