gpt4 book ai didi

swift - 需要有关自动布局 anchor 的帮助

转载 作者:可可西里 更新时间:2023-11-01 02:00:32 26 4
gpt4 key购买 nike

我正在学习自动布局 anchor 并尝试以编程方式实现这个简单的事情

enter image description here

这是我的代码

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)

let view1 = UIView()
view1.backgroundColor = .brown
blueView.addSubview(view1)

view1.translatesAutoresizingMaskIntoConstraints = false
view1.topAnchor.constraint(equalTo: blueView.topAnchor, constant:10).isActive = true
view1.bottomAnchor.constraint(equalTo: blueView.bottomAnchor, constant:10).isActive = true
view1.leadingAnchor.constraint(equalTo: blueView.leadingAnchor, constant:10).isActive = true
view1.trailingAnchor.constraint(equalTo: blueView.trailingAnchor, constant:10).isActive = true
view1.heightAnchor.constraint(equalToConstant: 80).isActive = true
view1.widthAnchor.constraint(equalToConstant: 80).isActive = true
}

这就是我得到的

enter image description here

出了什么问题?

最佳答案

What is going wrong?

我看到三类问题:

  1. 一些约束未激活。 heightAnchorwidthAnchor 约束尚未设置,因此 isActive = true
  2. 约束有冲突。您正在根据常量设置约束,而不考虑 super View 的尺寸。这导致约束发生冲突,例如,view1 不能是 100 点高距父 View 顶部 263 点 284 个点从底部 anchor 开始,同时进行。
  3. 基于常量的约束通常无法使 View 在屏幕上居中,因为屏幕尺寸差异很大。

以下是这三个问题的一种可能解决方案:

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)

let view1 = UIView()
view1.backgroundColor = .brown
view.addSubview(view1)

view1.translatesAutoresizingMaskIntoConstraints = false
view1.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
view1.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
view1.heightAnchor.constraint(equalToConstant: 100.0).isActive = true
view1.widthAnchor.constraint(equalToConstant: 100.0).isActive = true
}

这里,我们设置view1的X和Y中心等于父 View 的X和Y中心,定义view1的高度和宽度为常量,并将所有相关约束设置为事件状态。

您可以在 Auto Layout Guide 中找到其他解决方案.

关于swift - 需要有关自动布局 anchor 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46747131/

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