gpt4 book ai didi

ios - 添加约束后 View 及其 subview 消失

转载 作者:行者123 更新时间:2023-11-30 12:39:03 25 4
gpt4 key购买 nike

我的 Controller 顶部、导航栏下方有一个 View (addressLabelBackground)。它在纵向模式下显示良好,但当我将设备切换到横向模式时,我试图让它重新调整大小。

因此,我尝试通过将 addressLabelBackground 固定到 View 的左侧 (0)、 View 的右侧 (0) 以及导航栏的顶部 (0),在 Storyboard 中添加一些约束,但是当我运行应用程序时, View 及其所有 subview 都会消失。

我还尝试以编程方式添加约束(就像我对 subview 所做的那样),但同样,addressLabelBackground 和其中的 subview 消失了。

这是代码(在viewDidLoad中):回答后更新,发生崩溃

    view.addSubview(addressLabelBackground)
addressLabelBackground.addSubview(addressLabel)
addressLabelBackground.addSubview(turnToTechLogo)

addressLabelBackground.translatesAutoresizingMaskIntoConstraints = false

addressLabelBackground.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
addressLabelBackground.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
addressLabelBackground.topAnchor.constraint(equalTo: (navigationController?.navigationBar.bottomAnchor)!).isActive = true

addressLabel.font = UIFont.boldSystemFont(ofSize: 16.0)
addressLabel.translatesAutoresizingMaskIntoConstraints = false

addressLabel.centerXAnchor.constraint(equalTo: addressLabelBackground.centerXAnchor).isActive = true
addressLabel.topAnchor.constraint(equalTo: addressLabelBackground.topAnchor).isActive = true
addressLabel.bottomAnchor.constraint(equalTo: addressLabelBackground.bottomAnchor).isActive = true

addressLabel 的约束在纵向和横向上都工作得很好 - 它保持在 View 的中心。但是,当我尝试以相同的方式或在 Storyboard中添加 addressLabelBackground 的约束时,一切都会消失。

当设备处于横向模式时,如何使该 View 保持固定在导航栏下方,并拉伸(stretch)其宽度以适合屏幕宽度?

编辑(第二天):仍在尝试解决这个问题。我尝试创建一个名为 innerContainer 的 subview 并将其固定到其 topAnchor:

    let frame = CGRect(x: 0, y: 20, width: self.view.bounds.width, height: self.view.bounds.height-20)
let innerContainer = UIView(frame: frame)

self.view.addSubview(innerContainer)
innerContainer.addSubview(addressLabelBackground)

addressLabelBackground.translatesAutoresizingMaskIntoConstraints = false
addressLabelBackground.topAnchor.constraint(equalTo: innerContainer.topAnchor).isActive = true

但它再次消失了。

我还尝试将其固定到 Storyboard中 topLayoutGuide 的顶部(0 点),然后它也消失了。

最佳答案

您的addressLabelBackground需要一个自动布局,该布局不仅固定在顶部,而且固定在其 super View 的两侧。将现有 widthAnchor 约束替换为以下两个:

addressLabelBackground.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
addressLabelBackground.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

关于ios - 添加约束后 View 及其 subview 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42475744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com