ComposableStyling
ComposableStyling 为视图样式和可组合操作符提供了一组函数。
可组合操作符
<>
操作符用于组合具有相同签名的函数。
precedencegroup SingleTypeComposition {
associativity: left
}
infix operator<>: SingleTypeComposition
public func <> <A: AnyObject>(f: @escaping (A) -> Void, g: @escaping (A) -> Void) -> (A) -> Void {
return { a in
f(a)
g(a)
}
}
安装
pod 'ComposableStyling'
使用方法
1. 通过组合要应用的样式函数来创建样式函数。
例如,如果我们想:
- 设置背景颜色为红色
- 设置边框颜色为蓝色,宽度为 10
我们可以通过组合两个函数来创建样式函数。
let style = styleViewBackgroundColor(.red) <>
styleViewBorder(color: .blue, width: 10)
- 将样式函数应用到底视图中。
let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
style(view)
比较
ComposableStyling帮助我们理解应用的设计。
之前
let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
view.backgroundColor = .red
view.layer.cornerRadius = 30
view.layer.masksToBounds = true
view.layer.borderWidth = 10
view.layer.borderColor = .blue
之后
let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
let style = styleViewBackgroundColor(.red) <>
styleViewCornerRadius(30) <>
styleViewBorder(color: .blue, width: 10)
style(view)