以编程方式设置一个uibutton的中心 – SWIFT
我有UIView
内的UIButton
,我的UIButton
有我在故事板中设置的约束。 现在,我想在UIView
的中心设置UIButton
的中心。 我将如何编程?
这种方法是使用使用NSLayoutConstraint其中self.cenBut是您的button的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()
尝试.center
属性
myButton.center = self.view.center
你也可以指定x
和y
如果你需要的话。
myButton.center.x = self.view.center.x // for horizontal myButton.center.y = self.view.center.y // for vertical
我应该
yourButton.setCenter(self.view.center);
但请记住,如果以编程方式设置视图的框架,则您的布局约束可能无法正常工作。
由于您使用约束,因此您将无法设置中心,因此您需要使用约束来设置中心:
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);
我假设你知道什么“编程”意味着自动布局约束。 如果你真的在使用自动布局,那么你必须设置你的button的属性setTranslatesAutoresizingMaskIntoConstraints为false。