以编程方式设置一个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 

你也可以指定xy如果你需要的话。

 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。