Swift方法链的优雅应用风格

通常,在使用iOS代码进行设计时,我认为通常是以下描述。

 让sampleLabel = UILabel()sampleLabel.backgroundColor = .yellow 
sampleLabel.text =“样本标签”
sampleLabel.textColor = .green
sampleLabel.textAlignment = .center
sampleLabel.font = .boldSystemFont(ofSize:30.0)
sampleLabel.numberOfLines = 0

像` sampleLabel这样的编写很麻烦 〜`用这种方式写了很多遍,似乎代码的前景也变坏了。

因此,例如,定义这样的自己的方法并将样式应用于闭包中的目标是一种很好的技术。

 扩展UILabel { 
func apply(_closure:(_ this:UILabel)-> Void)-> Self {
封口(个体经营)
返回自我
}
}

sampleLabel.apply {这在
this.backgroundColor(.yellow)
this.text(“样本标签”)
this.textAlignment(.center)
this.textColor(.green)
this.font(.boldSystemFont(ofSize:30.0))
this.numberOfLines(0)
}

我觉得这段代码井井有条,似乎比正常描述要好。
但是,每次都写一个闭包有点费力。 另外,我必须像“ this。〜”这样写的东西与平时相比没有变化。

我认为Swift可以使用方法链来编写更简洁的代码。

因此,我制作了一个名为ApplyStyleKit的库。

https://github.com/shindyu/ApplyStyleKit

借助ApplyStyleKit,您可以使用方法链编写样式应用程序的代码,如下所示。

  sampleLabel.applyStyle 
.backgroundColor(.yellow)
.text(“样本标签”)
.textAlignment(.center)
.textColor(.green)
.font(.boldSystemFont(ofSize:30.0))
.nu​​mberOfLines(0)

其特点是applyStyle和后续方法不会直接返回UIView,而是返回另一个以UIView为元素的对象(定义为StyleObject)。
以下代码是实现部分。

 公共协议ApplyStyleProtocol { 
关联类型StyleCompatible
var applyStyle:StyleObject {get}
}

扩展ApplyStyleProtocol {
公共var applyStyle:StyleObject {
返回StyleObject()
}
}

公共结构StyleObject {
让基地:基地

init(_ base:Base){
self.base =基本
}
}

我们要做的就是将与StyleObject的属性相对应的UIKit UIView和UILabel方法实现为扩展。
这样,仅当编写`.applyStyle`时,才可以使用相应的方法,并且可以编写代码而不会破坏Xcode的完成。

当将ApplyStyleKit描述的结果与常规样式应用的代码进行比较时,我认为主题元素名称仅出现一次,因此它成为了漂亮的描述。

在考虑实现此接口的方法时,我记得RxSwift中对.rx的描述是相似的,因此我参考它来实现它。

我创建了一个OSS,可以使用方法链编写样式应用程序代码。 由于实现不是特别复杂,因此如果您愿意阅读源代码,请务必使用它。
如果您喜欢,我正在等待Contribute和Star。 好吧。