XCode: 是否可以创建可重用的堆栈视图?

XCode: Is it possible to create reusable stack views?

是否可以在故​​事板上创建可在以后动态生成的可重用堆栈视图?有点像 template/widget/component.

我知道我可以用 class 来做到这一点,但如果我能够直观地生成一组可以在以后重复使用的组件,我也许可以让我们的设计师直接更改故事板。

是的 -- 您可以使用任何 UIView 执行此操作。有很多教程(例如 http://onedayitwillmake.com/blog/2013/07/ios-creating-reusable-uiviews-with-storyboard/

基本思路是将一个拖到 Storyboard 或 XIB 上,为其自定义 class,然后实现视图的 awakeFromNib 以加载它。

Yes.It是。

  1. 创建一个空的 xib,然后向其中添加堆栈视图。
  2. 然后创建一个扩展 UIStackView 的 class。

    class stackView: UIStackView {
    
    var contentView : UIStackView!
    override init(frame: CGRect) {
        super.init(frame: frame)
        xibSetup()
    }
    
    required init(coder: NSCoder) {
        super.init(coder: coder)
        xibSetup()    }
    
    func xibSetup() {
        contentView = loadViewFromNib() 
        contentView.frame = bounds
        contentView.autoresizingMask = [UIViewAutoresizing.flexibleWidth, UIViewAutoresizing.flexibleHeight]
        addSubview(contentView)
    }
    
    func loadViewFromNib() -> UIStackView! {
    
        let view: UIStackView? = Bundle.main.loadNibNamed("stackView", owner: nil, options: nil)?.first as! UIStackView?
        return view
    }
    
  3. 创建一个 viewController.Add stackView 到 it.In StackView 属性,转到命名为自定义 class 的第 3 个栏,为 class 命名为 stackView class姓名