【发布时间】:2021-10-21 16:11:25
【问题描述】:
我已经处理了以编程方式创建约束的问题,但这次有些东西不起作用,我不知道它是什么。
override func viewDidLoad() {
super.viewDidLoad()
let imageview = UIImageView(image: UIImage(named: "dollarsign"))
//imageview.translatesAutoresizingMaskIntoConstraints = false
imageview.backgroundColor = UIColor(red: 0, green: 1, blue: 0, alpha: 0.10)
self.view.addSubview(imageview)
self.view.bringSubviewToFront(imageview)
imageview.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: 0).isActive = true
imageview.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 0).isActive = true
imageview.widthAnchor.constraint(equalToConstant: 320).isActive = true
imageview.heightAnchor.constraint(equalToConstant: 480).isActive = true
当imageview.translatesAutoresizingMaskIntoConstraints = false 被注释掉时,图像视图会显示出来,并以其自然宽度、高度定位在 (0,0) 处。
但我不希望它自动为我创建约束,所以当我取消注释 imageview.translatesAutoresizingMaskIntoConstraints = false 以让我的编程约束开始...然后 UIImageView 消失:
我做错了什么?
编辑:我不明白,但出于某种原因,当我让约束控制时,它会将其定位在 -320,-480,即使我已经创建了约束以将其连接到尾随和底部锚点。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("image view frame: \(imageview.frame)")
}
图像视图帧:(-320.0, -480.0, 320.0, 480.0)
【问题讨论】:
-
根据您的限制,图像视图不应位于 (0, 0)。不应该在右下角吗?为什么你期望它在 (0, 0)?而且我无法重现这种行为。当我取消注释
= false时,图像视图出现在右下角。尝试在一个全新的项目中重现它。 -
哦,等等,您正在使用显示一堆东西的表格视图,因此您实际上需要向下滚动一点才能真正看到“右下角”。试试看。
-
@kenny Wyland 删除宽度/高度约束并给出上下约束。
-
@Sweeper 我不希望它位于 0,0,但这是它通常默认为无约束的位置。我希望图像被固定在底部和右侧,这就是我设置底部和尾随约束的原因。我不希望它被限制在视图的顶部。问题是当我取消注释
= false时,图像视图消失了。 -
那是 TableViewController 吗?如果是这样,那么主视图就是你的表格视图,如果你向它添加子视图,你会得到奇怪的行为。
标签: ios swift nslayoutconstraint