SwiftUIViewKit 1.0.43

SwiftUIViewKit 1.0.43

Lonelie 维护。



 
依赖关系
SnapKit>= 0
RxSwift>= 0
RxRelay>= 0
RxCocoa>= 0
 


  • 作者
  • Lonelie

SwiftUIViewKit

可以更 容易 地制作 UI。

使用 SwiftUIViewKit 创建 UIView 类。

import UIKit
import SwiftUIViewKit
class MyView: SwiftUIView {
    func body: UIView {
        UIVStackView {
            UILabel("blah")
            UIHStackView {
                UILabel("some title")
                    .priority(.required)
                UILabel("some description")
            }
        }
    }
}

默认情况下,可以使用 UIStackView 来配置垂直或水平线性布局。


UIVStackView(alignment: .center, spacing: 12.0) {
    /* ANYTHING */
}
.distribution(.fillEqually)

此时,您可以通过 utilising UIStrackView.spacing.alignment.distribution 来获取所需的布局。


UIView.spacer()
    .frame(maxWidth: .greatestFiniteMagnitude, horizontalAlignment: .right)
    .padding(.top, 12.0)

所有 UIView(包括继承的子类)都可以通过 .frame 来调整大小,或者使用 .padding 来指定边距。


UIVScrollView {
    /*Any UIView*/
}
UIHScrollView {
    /*Any UIView*/
)

UIScrollView 也很容易使用。


UILabel(
    UILabel(image: "ImageName(String literal) or UIImage object.")
    + UILabel("Big").font(.systemFont(ofSize: 20.0, weight: .regular))
    + UILabel("Small").font(.systemFont(ofSize: 10.0, weight: .regular))
)

UILabel 中的 + 运算符使文本格式化变得容易。


UIVScrollView {
    UILabel("some text")
    UIImageView(named: "imageName").renderingMode(.alwaysTemplate)
)
.color(.cyan)

.color 找到所有包含在其中的 UIView,包括相应的 UIView,并应用颜色值。


private let disposeBag = DisposeBag()
private let text      = BehaviorRelay<String>(value: "Now loading...")
private let imageName = BehaviorRelay<String>(value: "icn_default_place_holder")
private let color     = BehaviorRelay<Color>(value: .red)

var body: UIView {
    UIVScrollView {
        UILabel(self.text)
        UIImageView(named: self.imageName)
    )
    .color(self.color)
}

使用 Rx 后,可以轻松制作响应式 UI。


someView.subscribe(someObservable) {view, element in
    /* blah */
}

同样,您可以在接收到 Observable 后自定义行为。


someView.configure {view in
    /* blah */
}

可以使用 UIView 中的 .configure 来自定义尚未支持的功能。