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 来自定义尚未支持的功能。