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

Ios XCode:是否可以创建可重用的堆栈视图?,ios,xcode,uistackview,Ios,Xcode,Uistackview,是否可以在故事板上创建可动态使用的可重用堆栈视图,以便以后生成?有点像模板/小部件/组件 我知道我可以用一个类来实现这一点,但是如果我能够可视化地生成一组组件,这些组件可以在以后重新使用,那么我就可以让我们的设计人员直接对故事板进行更改。是的,您可以用任何UIView来实现这一点。这方面有很多教程(例如) 基本思想是将一个视图拖到故事板或XIB上,为其创建一个自定义类,然后实现视图的awakeFromNib来加载它。是的 创建一个空的xib,然后向其中添加堆栈视图 然后创建一个扩展UIStack

是否可以在故事板上创建可动态使用的可重用堆栈视图,以便以后生成?有点像模板/小部件/组件

我知道我可以用一个类来实现这一点,但是如果我能够可视化地生成一组组件,这些组件可以在以后重新使用,那么我就可以让我们的设计人员直接对故事板进行更改。

是的,您可以用任何UIView来实现这一点。这方面有很多教程(例如)

基本思想是将一个视图拖到故事板或XIB上,为其创建一个自定义类,然后实现视图的
awakeFromNib
来加载它。

是的

  • 创建一个空的xib,然后向其中添加堆栈视图
  • 然后创建一个扩展UIStackView的类

    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
    }
    
  • 创建一个viewController。向其中添加stackView。在stackView属性中,转到第三个栏,命名为自定义类,为类名指定stackView类名