Outfit 0.1.0

Outfit 0.1.0

Oleksii Faizullov 维护。



Outfit 0.1.0

  • 作者:
  • fuzza

Outfit

CI Status Version License Platform

用途

基本用途

  1. 导入框架
import Outfit
  1. 定义类对 Outfitable 协议的约束
extension MyCustomView: Outfitable {}
  1. 使用一些漂亮的 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
        }
    }
}
  1. 访问你的衣橱并尝试一下
let view = MyCustomView()

view.wrd.tryOn { 
    $0.perfectLook() 
}
  1. 享受乐趣!

高级用途

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 文件。