Outfit
用途
基本用途
- 导入框架
import Outfit
- 定义类对
Outfitable
协议的约束
extension MyCustomView: Outfitable {}
- 使用一些漂亮的 outfit 扩展你的衣橱
extension Wardrobe where Wearer: MyCustomView {
func perfectLook() -> Outfit<Wearer> {
return {
// Customize the instance of MyCustomView
$0.titleColor = .red
$0.placeholder = "It's something new"
$0.clipsToBounds = true
}
}
}
- 访问你的衣橱并尝试一下
let view = MyCustomView()
view.wrd.tryOn {
$0.perfectLook()
}
- 享受乐趣!
高级用途
Outfit 组成
您可以使用自定义连接运算符 (++) 将 Outfit 合并在一起
extension Wardrobe where Wearer: UIView {
func rounded(_ radius: CGFloat) -> Outfit<Wearer> {
return {
$0.layer.masksToBounds = true
$0.layer.cornerRadius = radius
}
}
func background(_ color: UIColor) -> Outfit<Wearer> {
return { $0.backgroundColor = color }
}
func defaultView() -> Outfit<Wearer> {
return rounded(5.0)
++ background(.white)
}
}
在子类中复用服装
您可以在子类中复用父类的服装
extension Wardrobe where Wearer: UIView {
func defaultView() -> Outfit<Wearer> { ... }
}
extension Wardrobe where Wearer: UIButton {
func title(_ text: String) -> Outfit<Wearer> {
return {
$0.setTitle(text, for: .normal)
}
}
func defaultButton() -> Outfit<Wearer> {
return defaultView()
++ title("Default title")
}
}
重写默认属性
如果您需要在单个位置重写某些属性或添加新的属性,且不需要为新属性定义新函数
func viewDidLoad() {
super.viewDidLoad()
let view = MyCustomView()
view.wrd.tryOn {
$0.perfectLook()
++ { $0.titleColor = .green }
}
}
示例
要运行示例项目,首先克隆存储库,然后从示例目录运行 pod install
。
要求
- Swift 4.2
- Xcode 10
安装
Outfit可以通过CocoaPods获取。要安装它,只需将下面的行添加到您的Podfile中
pod 'Outfit'
作者
Oleksii Faizullov, [email protected]
许可证
Outfit 可在 MIT 许可证下使用。更多信息请参阅 LICENSE 文件。