在Swift 3上:以编程方式向Interface Builder视图添加元素和约束

时间:2017-05-02 15:55:16

标签: ios swift uibutton uilabel constraints

我在界面构建器上创建了一个UI,它看起来像这样:enter image description here

在底部,我必须添加一个标记为“拒绝”的UIButton:

我使用以下代码,它看起来不错(也在模拟器上):

Source.tick

我必须对标签做同样的事情:当用户再次进入ViewController时,在按下rejectButton之后,会出现此标签:

func createRejectButton(){
    let rejectButton = UIButton()
    rejectButton.setTitleColor(.red, for: .normal)
    rejectButton.setTitle("Reject", for: .normal)
    rejectButton.frame = CGRect(x: view.frame.width/2 - 100, y: view.frame.height / 2, width: 200, height: 40)
    view.addSubview(rejectButton)
    rejectButton.addTarget(self, action: #selector(rejectAction), for: .touchUpInside)
    if (self.movement.rejected) {
        rejectButton.isHidden = true
    } else {
        rejectButton.isHidden = false
    }

    //With the frame definition, I get the UIButton centered, but the Y coordinate is off, so I add a vertical spacing to the accountBalanceLabel
    let verticalSpacing1 = NSLayoutConstraint(item: rejectButton, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: accountBalanceLabel, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 15)
    NSLayoutConstraint.activate([verticalSpacing1])

}

如果我运行应用程序,除了我没有让被拒绝的标签位于定义的verticalSpacing之外,我在控制台上遇到关于按钮的错误!

如果按钮正常工作,为什么会出现这些错误? (如果我停止调用createRegectedLabel()函数,我会停止获取这些错误。这是我得到的消息:

enter image description here

顺便说一下,我被要求添加按钮和标签符号代码,同时保持接触界面生成器部分不变,所以摆脱它不是一个选项。必须在代码中创建按钮和标签以及它们所需的约束。

0 个答案:

没有答案