【问题标题】:satisfying two auto layout constraints programmatically - Swift以编程方式满足两个自动布局约束 - Swift
【发布时间】:2020-11-11 19:28:35
【问题描述】:

我想设置一个带有自动布局约束的UIButton

基本上我希望高度是容器视图高度的乘数:

button.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.43).isActive = true

如果高度没有达到常数 44,我想将其设置为 44,我添加了这个:

button.heightAnchor(greaterThanOrEqualToConstant: 44).isActive = true

显然,像这样以编程方式设置 2 个约束会导致冲突,有没有办法以编程方式完成这 2 个先决条件而不引起警告?

【问题讨论】:

  • '如果高度没有达到某个常数,我想将其设置为数字常数,我添加了这个' -- 请解释一下
  • 我用正确的数字常量编辑了它

标签: swift uiview uibutton constraints programmatically


【解决方案1】:

您需要为“比率”约束设置较低的优先级

let constraint = button.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.43)
constraint.priority = .defaultHigh
constraint.isActive = true

如果引擎仍然无法确定布局,您可以尝试不同的优先级值。

UILayoutPriority documentation

【讨论】:

    【解决方案2】:

    您要么设置低优先级

    let con = button.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.43)
    con.layoutPriority //////////////
    con.isActive = true
    

    或者自己数学计算,用 if 语句决定

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多