以编程方式获取uibutton的约束

时间:2016-11-04 12:50:12

标签: ios swift nslayoutconstraint

我在Storyboard中有4个按钮,其中包含BottomSpace和Horizo​​ntal Alignment约束。有没有办法访问这些约束常量而不将它们作为出口链接?我想在用户按下按钮时更新这些常量,因此伪代码的理想情况是:

func buttonPressed(_ button: UIButton) {
      button.bottomSpaceConstraint.constant += 10
      button.horizontalAlignment.constant += 10
}

提前谢谢!

3 个答案:

答案 0 :(得分:9)

为了扩展Stormsyder的答案,使用var str = 'gbox_asset_locations_list'; var result = str.substring(str.indexOf('_') + 1, str.lastIndexOf('_')); console.log(result) 方法可以更清晰地完成同样的事情。请参阅以下内容:

filter

请注意,如果这些约束不存在,这将会崩溃,因此请确保它们安全地执行或解包。

答案 1 :(得分:3)

回答swift 3:

func buttonPressed(_ button: UIButton) {
    for constraint in button.superview!.constraints {
        if constraint.firstAttribute == .bottom {
            constraint.constant += 10
        }
    for constraint in button.constraints {
        if constraint.firstAttribute == .centerY {
            constraint.constant += 10
        }
    }
}

答案 2 :(得分:0)

使用此功能可以获得约束:

func buttonPressed(_ button: UIButton) {
    let array = button?.superview?.constraints

    for constrains  in array! {
        print( constrains.constant)
    }

}