【问题标题】:Swift: addSubview is placed on previous viewSwift:addSubview 放在前一个视图上
【发布时间】:2023-03-15 06:41:01
【问题描述】:

我使用此代码向父级添加两个视图:

let view0 = StarClass.createMyClassView()
parent.addSubview(view0)

let view1 = StarClass.createMyClassView()
parent.addSubview(view1)

这段代码工作正常,但view1 没有放在view0 的底部

view1 放在view0

我想在view0底部添加view1

我该怎么做?

【问题讨论】:

标签: swift nib addsubview


【解决方案1】:

您可以通过使用自动布局来实现,请参见下面的示例。

    let view0 = StarClass.createMyClassView()
    view0.translatesAutoresizingMaskIntoConstraints = false // Enables autolayout

    parent.addSubview(view0)

    let view1 = StarClass.createMyClassView()
    view1.translatesAutoresizingMaskIntoConstraints = false 
    parent.addSubview(view1)

    NSLayoutConstraint.activate([
        view0.leftAnchor.constraint(equalTo: parent.leftAnchor), // Set layout for view0
        view0.rightAnchor.constraint(equalTo: parent.rightAnchor),
        view0.topAnchor.constraint(equalTo: parent.topAnchor),
        view0.heightAnchor.constraint(equalToConstant: 100),

        view1.leftAnchor.constraint(equalTo: parent.leftAnchor), // Set layout for view1
        view1.rightAnchor.constraint(equalTo: parent.rightAnchor),
        view1.topAnchor.constraint(equalTo: view0.bottomAnchor), // below view0
        view1.heightAnchor.constraint(equalToConstant: 100)
        ])

【讨论】:

  • 谢谢,对我来说最好的解决方案
  • 我还有一个问题。我如何使用 foreach ?示例:对于 1...20{ 让 view = StarClass.createMyClassView() view.translatesAutoresizingMaskIntoConstraints = false parent.addSubview(view) } 。现在,如何使用 NSLayoutConstraint ?!
  • 您可以在变量中跟踪先前添加的视图,并在循环中更新它。然后使用前一个视图中的锚点设置循环中的布局。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
相关资源
最近更新 更多