如何向 StackView 的子视图内的视图添加约束
How to add constraints to a view inside a subview of a 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
我正在做的是设置宽度,锚点的高度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
在我的测试程序中有一个垂直堆栈视图,在它的第三个子视图(底部的绿色子视图)中我想在它的中心添加一个红色矩形。我尝试锚定到 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
我正在做的是设置宽度,锚点的高度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