Skip to content

Instantly share code, notes, and snippets.

@ltryee
Created December 28, 2023 09:06
2.2 新增generator协议
// FILE: ElementGenerator.swift
protocol ElementGenerator {
/// 向 stack view 添加子控件
/// - Parameters:
/// - elements: 子控件列表
/// - stackView: stack view
func addArrangedElements(_ elements: [ElementType], to stackView: UIStackView)
/// 根据子控件类型描述生成子控件
/// - Parameter element: 子控件类型描述
/// - Returns: 子控件
func elementView(from element: ElementType) -> UIView
/// 在子控件添加到 stack view 之后,继续设置子控件的属性
/// - Parameters:
/// - view: 子控件
/// - element: 子控件描述
func configureView(_ view: UIView, for element: ElementType)
}
extension ElementGenerator {
func addArrangedElements(_ elements: [ElementType], to stackView: UIStackView) -> Void {
for element in elements {
let subview = elementView(from: element)
stackView.addArrangedSubview(subview)
configureView(subview, for: element)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment