我在UIButton
内有一个UIView
,我的UIButton
有我在故事板中设置的约束。现在,我想将UIButton
的中心设置在UIView
的中心。我将如何以编程方式执行此操作?
答案 0 :(得分:21)
尝试{/ 1}}属性
.center
如果需要,您还可以指定myButton.center = self.view.center
和x
。
y
答案 1 :(得分:8)
这种方法使用的是使用NSLayoutConstraint,其中self.cenBut是按钮的IBoutlet。
func setupConstraints() {
let centerX = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0)
let centerY = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)
let height = NSLayoutConstraint(item: self.cenBut, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 22)
self.cenBut.translatesAutoresizingMaskIntoConstraints = false
self.view.addConstraints([centerX, centerY, height])
}
在viewDidLoad()
中self.view.removeConstraints(self.view.constraints)
self.setupConstraints()
答案 2 :(得分:0)
我应该
yourButton.setCenter(self.view.center);
但请记住,如果以编程方式设置视图的框架,则布局约束可能无法按预期工作。
答案 3 :(得分:0)
由于您使用的是约束,因此您无法设置中心,因此您还需要使用约束来设置中心:
let centerYCon = NSLayoutConstraint(item: labelMessage,
attribute: .CenterY,
relatedBy: .Equal,
toItem: contentView,
attribute: .CenterY,
multiplier: 1.0,
constant: 0.0);
contentView.addConstraint(centerYCon);
let centerXCon = NSLayoutConstraint(item: labelMessage,
attribute: .CenterX,
relatedBy: .Equal,
toItem: contentView,
attribute: .CenterX,
multiplier: 1.0,
constant: 0.0);
contentView.addConstraint(centerXCon);
我假设你以编程方式知道""表示具有自动布局约束。如果您真正使用autolayout,则必须将按钮的属性设置为setTranslatesAutoresizingMaskIntoConstraints为false。
答案 4 :(得分:0)
这可以通过两种方式完成:
myButton.center = view.center //view is your parentView
myButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
myButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true