swift - 如何向 StackView 的子视图内的视图添加约束
问题描述
在我的测试程序中有一个垂直堆栈视图,在它的第三个子视图(底部的绿色)中,我想在其中心添加一个红色矩形。我尝试锚定到centerXAnchor
,centerXAnchor
但它不起作用。我怀疑这是因为绿色视图不使用 X 和 Y 锚点,因为它的大小和位置由垂直堆栈视图管理。在绿色视图中居中红色矩形的正确方法是什么?这是我的代码和屏幕截图:
class ViewController: UIViewController {
@IBOutlet var greenView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let testView = UIView(frame: CGRect(x: 0,y: 0,width: 50,height: 50))
testView.backgroundColor = .red
greenView.addSubview(testView)
greenView.translatesAutoresizingMaskIntoConstraints = false
testView.centerXAnchor.constraint(equalTo: greenView.centerXAnchor).isActive = true
testView.centerYAnchor.constraint(equalTo: greenView.centerYAnchor).isActive = true
}
}
是故事板。唯一的限制是第一个视图高度 = 第二个视图高度,绿色视图高度 = 0.8 StackView 高度:
这是结果:
解决方案
这个错误的罪魁祸首是greenView.translatesAutoresizingMaskIntoConstraints = false
我正在做的是使用 Anchor api 设置宽度、高度
let testView = UIView(frame: CGRect(x: 0,y: 0,width: 0,height: 0))
testView.backgroundColor = .white
greenView.addSubview(testView)
testView.translatesAutoresizingMaskIntoConstraints = false
testView.centerXAnchor.constraint(equalTo: greenView.centerXAnchor).isActive = true
testView.widthAnchor.constraint(equalToConstant: 50).isActive = true
testView.heightAnchor.constraint(equalToConstant: 100).isActive = true
testView.centerYAnchor.constraint(equalTo: greenView.centerYAnchor).isActive = true
推荐阅读
- swift - 将颜色设置为 UIColor.clear 和 nil 之间有实际区别吗?- 斯威夫特
- flutter - UI中面临的问题[颤振]
- python - Python Matplotlib:for循环中的savefig图
- eclipse - 如何更改配置文件以获取正确的 java 位置以运行 scala ide - “返回的退出代码 1”
- python - 如何在本地 Jupyter Notebook 中进行离线作业?
- android - 如何在自定义下载器中使用 glide
- java - 使用两个不同的随机数选项初始化变量时遇到问题
- amazon-web-services - 尽管将有效的数据库标识符传递给配置,Sequelize.js AWS RDS 未知数据库
- google-cloud-platform - TCP连接被直通负载均衡器强行关闭?
- javascript - 是否可以将我的 bootstrap .js 函数与其他 bootstrap 版本“隔离”?