以编程方式使用乘数设置 centerXAnchor 约束不起作用
Setting centerXAnchor constraint with multiplier programmatically doesn't work
我正在尝试以编程方式设置带有乘数的视图的水平中心约束。但是我得到的总是以 1.0
作为乘数的约束。这就是我所做的:
private func createHalfCenteredView() {
let newView = UIView(frame: .zero)
newView.backgroundColor = .systemTeal
view.addSubview(newView)
newView.translatesAutoresizingMaskIntoConstraints = false
let top = newView.topAnchor.constraint(equalTo: view.topAnchor)
let bottom = newView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
let width = newView.widthAnchor.constraint(equalToConstant: 100)
let center = newView.centerXAnchor.constraint(equalToSystemSpacingAfter: view.centerXAnchor,
multiplier: 0.5)
NSLayoutConstraint.activate([top, bottom, width, center])
newView.setNeedsUpdateConstraints()
view.setNeedsLayout()
view.layoutIfNeeded()
}
我尝试使用 lessThanOrEqualToSystemSpacingAfter
而不是 equalToSystemSpacingAfter
但它仍然是一样的。乘数始终为 1.0 或恰好在中间。
有人可以帮我解决这个问题吗?谢谢
你不能使用辅助函数来使用乘法器,试试这个方法
let center = NSLayoutConstraint(item: newView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 0.5, constant: 0)
参考answer
我正在尝试以编程方式设置带有乘数的视图的水平中心约束。但是我得到的总是以 1.0
作为乘数的约束。这就是我所做的:
private func createHalfCenteredView() {
let newView = UIView(frame: .zero)
newView.backgroundColor = .systemTeal
view.addSubview(newView)
newView.translatesAutoresizingMaskIntoConstraints = false
let top = newView.topAnchor.constraint(equalTo: view.topAnchor)
let bottom = newView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
let width = newView.widthAnchor.constraint(equalToConstant: 100)
let center = newView.centerXAnchor.constraint(equalToSystemSpacingAfter: view.centerXAnchor,
multiplier: 0.5)
NSLayoutConstraint.activate([top, bottom, width, center])
newView.setNeedsUpdateConstraints()
view.setNeedsLayout()
view.layoutIfNeeded()
}
我尝试使用 lessThanOrEqualToSystemSpacingAfter
而不是 equalToSystemSpacingAfter
但它仍然是一样的。乘数始终为 1.0 或恰好在中间。
有人可以帮我解决这个问题吗?谢谢
你不能使用辅助函数来使用乘法器,试试这个方法
let center = NSLayoutConstraint(item: newView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 0.5, constant: 0)
参考answer