SimpleChainableStackUI 1.0.3

SimpleChainableStackUI 1.0.3

Orisun 维护。



  • 作者
  • Orisun

SimpleChainableStackUI

基于 UIStackView 的声明式 UI。

可链式

基本

var label: UILabel!

UILabel()
    .text("Text")
    .font(.systemFont(ofSize: 20))
    .assign(to: &label)
    .apply { label in
        label.textColor = .darkGray
    }

任何属性

class MyView : UIView {
    var text: String?
}

MyView()
    .set(\.text, to: "Text")
    .set(\.frame, to: .zero)

可观察的

使用 @CSObservable$

class MyViewController : UIViewController {
    
    @CSObservable var buttonTitle: String? = "Text"
    @CSObservable var buttonHidden = false
    
    override func viewDidLoad() {
        super.viewDidLoad()
        UIButton()
            .observableTitle($buttonTitle, for: .normal)
            .observableHidden($buttonHidden)
    }
    
    func update() {
        buttonTitle = "New Text"
        buttonHidden.toggle()
    }
}

动作

UIView()
    .onTapGesture {
        print("Hello")
    }
UIButton()
    .onTouchUpInside {
        print("Hello")
    }
UISwitch()
    .onValueChanged { isOn in
        print("\(isOn)")
    }

堆叠

  • UVStack 和 UIHStack
  • ForIn
  • 条件语句
  • 视图容器
  • 间距和绑定隐藏
let label: UILabel!

let container = ViewContainer {
    UIVStack {
        UILabel()
            .text("Text")
            .size(height: 28)
            .assign(to: &label)
        Spacer()
            .bindHidden(to: label)
        UIHStack(distribution: .fillEqually) {
            for text in ["A", "B", "C"] {
                UILabel().text(text)
            }
            if label.isHidden {
                UILabel().text("Text")
            }
        }
        UIButton(type: .system)
            .title("Hide Label", for: .normal)
            .onTouchUpInside {
                label.isHidden = true //Spacer will be hidden too.
            }
    }
}.frame(CGRect(x: 0, y: 0, width: 240, height: 120))

要求

  • iOS 10.0+
  • Swift 5.4+

安装

SimpleChainableStackUI 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中即可

pod 'SimpleChainableStackUI'

作者

Orisun,[email protected]

许可

SimpleChainableStackUI 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。