2015-12-23 67 views
0

我在这里看到的所有问题都是针对swift的1.我试图创建一个按钮并添加约束条件。我希望按钮定位在30 x和390 y。我还希望按钮的大小为75 x和75 y。我所尝试过的一切都没有奏效。请帮忙。继承人我创建按钮的代码(你会看到我添加了一个形象的按钮,这样我可以更好地看到它):如何以编程方式将约束添加到Swift 2中的按钮?

let button = UIButton(type: UIButtonType.System) as UIButton 
button.setImage(UIImage(named: "BlueBall.png")!, forState: U IControlState.Normal) 
button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside) 
self.view.addSubview(button) 

谢谢。 Anton

+0

据我所知,NSLayoutConstraint仍然在迅速2. API的一部分,你需要创建一些那些并将它们添加到'self.view'使用方法'addConstraint'('s')。 – dudeman

+0

顺便说一句,如果你使用'frame',就像Rob想要的那样,你可能也想设置'autoresizingMask'。就个人而言,我会坚持约束。 – Rob

回答

1

您可以设置框架的样子,并将translatesAutoresizingMaskIntoConstraints设置为true。这将是你案例中最简单的答案。

let button = UIButton(type: UIButtonType.System) 
    // button.translatesAutoresizingMaskIntoConstraints is true by default 
    button.frame = CGRectMake(30, 390, 75, 75) 
    button.setImage(UIImage(named: "BlueBall.png")!, forState: UIControlState.Normal) 
    button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside) 
    view.addSubview(button) 

如果你真的想用约束来做,它会做更多的工作。如果您的部署目标是iOS的9.0或更高版本,你可以这样做:

let button = UIButton(type: UIButtonType.System) 
    button.setImage(UIImage(named: "BlueBall.png")!, forState: UIControlState.Normal) 
    button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside) 
    view.addSubview(button) 

    button.translatesAutoresizingMaskIntoConstraints = false 
    NSLayoutConstraint.activateConstraints([ 
     button.leadingAnchor.constraintEqualToAnchor(view.leadingAnchor, constant: 30), 
     button.topAnchor.constraintEqualToAnchor(view.topAnchor, constant: 390), 
     button.widthAnchor.constraintEqualToConstant(75), 
     button.heightAnchor.constraintEqualToConstant(75) 
    ]) 
相关问题