以编程方式设置UIButton的中心 - SWIFT

时间:2015-08-26 06:11:35

标签: ios swift uiview uibutton

我在UIButton内有一个UIView,我的UIButton有我在故事板中设置的约束。现在,我想将UIButton的中心设置在UIView的中心。我将如何以编程方式执行此操作?

5 个答案:

答案 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