动态地将视图添加到UIStackview

GT *_*Kim 2 autolayout swift uistackview

我正在尝试UIStackView动态添加视图(或按钮)。

最初,UIStackView没有垂直排列的视图,从http响应中获得一些视图后,将几个视图(按钮)添加到UIStackViewUIStackView也可以自动布局以容纳特定区域。我试图找到动态添加示例,但失败了。

有人可以向我展示UIStackView动态添加视图的示例吗?

eks*_*pto 5

我在我的一个项目中使用了这段代码:

    let baseFrame = CGRect(origin: .zero, size: CGSize(width: requiredWidth, height: partitionHeight))
    for instrument in instruments {
        let partitionView = PartitionOnDemand(instrument: instrument, mode: playbackMode, frame: baseFrame, referenceView: partitionsAnimator)
        partitionsStackView.addArrangedSubview(partitionView)
        let tab = InstrumentInfoTabContainer.instantiate(with: instrument) {
            self.focus(on: instrument)
        }
        tabsStackView.addArrangedSubview(tab)
    }
Run Code Online (Sandbox Code Playgroud)


Vis*_*l16 5

它可能会帮助您。请注意以下几点:

  • 添加UIScrollView到您UIViewController的故事板或XIB中。
  • 初始化NSMutableArray名称arrViews即可获取服务器响应,并在阵列中添加视图。
  • 在init方法中初始化UIStackView传递arrView数组。
  • 之后,UIStackView将添加的子视图UIScrollView
  • 以编程方式将约束添加到UIStackView。而已。

    if let response = self.serverResponse {
        if let body = response.responseBody {
    
            if let view = body.views {
                arrViews =  createSubViews(view)
            }
    
        }
    }
    
    let stackView = UIStackView(arrangedSubviews: arrViews)
    stackView.translatesAutoresizingMaskIntoConstraints = false
    stackView.axis = .vertical
    stackView.spacing = 16
    stackView.distribution = .fill
    self.scrollView.addSubview(stackView)
    
    //constraints
    
    let leading = NSLayoutConstraint(item: stackView, attribute: .leading, relatedBy: .equal, toItem: self.scrollView, attribute: .leading, multiplier: 1.0, constant: 0)
    self.scrollView.addConstraint(leading)
    let trailing = NSLayoutConstraint(item: stackView, attribute: .trailing, relatedBy: .equal, toItem: self.scrollView, attribute: .trailing, multiplier: 1.0, constant: 0)
    self.scrollView.addConstraint(trailing)
    let top = NSLayoutConstraint(item: stackView, attribute: .top, relatedBy: .equal, toItem: self.scrollView, attribute: .top, multiplier: 1.0, constant: 0)
    self.scrollView.addConstraint(top)
    
    let bottom = NSLayoutConstraint(item: stackView, attribute: .bottom, relatedBy: .equal, toItem: self.scrollView, attribute: .bottom, multiplier: 1.0, constant: 0)
    self.scrollView.addConstraint(bottom)
    
    let equalWidth = NSLayoutConstraint(item: stackView, attribute: .width, relatedBy: .equal, toItem: self.scrollView, attribute: .width, multiplier: 1.0, constant: 0)
    
    self.scrollView.addConstraint(equalWidth)
    
    
    leading.isActive = true
    trailing.isActive = true
    top.isActive = true
    bottom.isActive = true
    equalWidth.isActive = true
    
    Run Code Online (Sandbox Code Playgroud)

希望对您有帮助。快乐的编码:)