以编程方式在按钮上使用约束

时间:2017-08-18 03:55:06

标签: ios swift facebook

我试图让我的Facebook登录按钮(屏幕截图的顶部中心)低于"注册或登录按钮"通过使用约束,但我不确定使用哪些约束以及如何使用它们。我对Swift 3很新,我还没有以编程方式完成约束,所以任何帮助都会受到欢迎!最初我只是使用CGRect中的x和y位置来放置按钮,但我注意到在不同的设备上,按钮不会在同一个地方,所以我现在尝试使用约束。

看起来像这样:

enter image description here

这是我的viewDidLoad中关于我的按钮的代码:

let fbLoginButton = FBSDKLoginButton()

view.addSubview(fbLoginButton)

fbLoginButton.frame = CGRect(x: 0, y: 0, width: view.frame.width - 
        100, height: 40)

self.view.addSubview(fbLoginButton)

fbLoginButton.center.x = view.frame.width/2

我尝试过:

let verticalSpace = NSLayoutConstraint(
    item: self, attribute: .bottom, relatedBy: .equal, toItem: fbLoginButton,
    attribute: .bottom, multiplier: 0.75, constant: 0)

但这导致我得到这个错误:

  

约束项必须是UIView或UILayoutGuide的实例。

1 个答案:

答案 0 :(得分:1)

尝试代码我在程序中添加了一个“发送”按钮,只是在按钮“Show Alert”下方添加了使用storyboard

@IBOutlet weak var showAlertButton: UIButton!

func AddButton(){


    let sendButton = UIButton(type: .system)
    sendButton.setTitle("Send", for: UIControlState())
    sendButton.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(sendButton)

    sendButton.leftAnchor.constraint(equalTo: showAlertButton.leftAnchor, constant: 0).isActive = true
    sendButton.rightAnchor.constraint(equalTo: showAlertButton.rightAnchor, constant: 0).isActive = true
    sendButton.topAnchor.constraint(equalTo: showAlertButton.bottomAnchor, constant: 10).isActive = true
    sendButton.widthAnchor.constraint(equalToConstant: 80).isActive = true
    sendButton.heightAnchor.constraint(equalTo: showAlertButton.heightAnchor).isActive = true


}

enter image description here