swift - 为什么在所有边缘上固定 UIStackView 会导致模棱两可的约束错误?
问题描述
以下代码尝试以编程方式将 UIStackView 固定在所有边缘 - 即使其全屏显示。这些看似简单的约束导致此错误的原因是什么?
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let stack = UIStackView(arrangedSubviews: [])
view.addSubview(stack)
NSLayoutConstraint.activate([
stack.leadingAnchor.constraint(equalTo: view.leadingAnchor),
stack.trailingAnchor.constraint(equalTo: view.trailingAnchor),
stack.topAnchor.constraint(equalTo: view.topAnchor),
stack.bottomAnchor.constraint(equalTo: view.bottomAnchor),
])
}
}
调试器中打印的约束错误(链接到WTFAutoLayout):
(
"<NSAutoresizingMaskLayoutConstraint:0x600003407840 h=--& v=--& UIStackView:0x7f97e240f020.width == 0 (active)>",
"<NSLayoutConstraint:0x60000340ccd0 H:|-(0)-[UIStackView:0x7f97e240f020] (active, names: '|':UIView:0x7f97e6002d90 )>",
"<NSLayoutConstraint:0x60000340dd10 UIStackView:0x7f97e240f020.trailing == UIView:0x7f97e6002d90.trailing (active)>",
"<NSLayoutConstraint:0x6000034073e0 'UIView-Encapsulated-Layout-Width' UIView:0x7f97e6002d90.width == 414 (active)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x60000340dd10 UIStackView:0x7f97e240f020.trailing == UIView:0x7f97e6002d90.trailing (active)>
解决方案
也添加下面的代码,
stack.translatesAutoresizingMaskIntoConstraints = false
推荐阅读
- json - 每当密钥包含“@”或“:”时,如何从邮递员的正文中获取响应
- swift - 阻止一种类型的用户登录应用程序 Firebase
- javascript - React/Javascript 显示 API 数据显示硬编码链接而不是超链接?
- angular - 三重列表如何在 Ionic 和 Angular 中工作?
- xamarin.android - 在 ImageView 中显示下载的图像在 Xamarin.Android 中不起作用
- c - linux中tcp的真正最大段大小是多少?
- c# - MVC 中的身份和 JWT + 应用程序 API 部分的身份
- javascript - 如何在保留现有表单数据的同时使用 JavaScript 将输入节点附加到表单?
- javascript - 有没有办法让新窗口与产生它的窗口进行通信?
- symfony - 无法运行作曲家需要树枝/扩展