Swift:addSubview 放在前一个视图上

Posted

技术标签:

【中文标题】Swift:addSubview 放在前一个视图上【英文标题】:Swift: addSubview is placed on previous view 【发布时间】:2018-06-26 11:15:24 【问题描述】:

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

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

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

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

view1 放在view0

我想在view0底部添加view1

我该怎么做?

【问题讨论】:

使用自动布局。 @AkshaysinghYaduvanshi 我想以编程方式添加视图 parent.insertSubview... 你是说front&back还是top&bottom? Add a subview programatically at the bottom of other view的可能重复 【参考方案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 ?! 您可以在变量中跟踪先前添加的视图,并在循环中更新它。然后使用前一个视图中的锚点设置循环中的布局。

以上是关于Swift:addSubview 放在前一个视图上的主要内容,如果未能解决你的问题,请参考以下文章

UIWindow 和 UIView addSubview 问题

Swift:addSubview 后背景消失

在 Tableview (Swift) 中设置静态位置视图

如何在 Swift 的视图层次结构顶部添加视图?

检测关于容器视图的 UIView 中心位置 - Swift - 以编程方式

AddSubview 和 PresentModal 问题