【问题标题】:When to use UILayoutPriority = .required in setContentCompressionResistancePriority(_ priority: UILayoutPriority, for axis: NSLayoutConstraint.Axis)何时使用 UILayoutPriority = .required in setContentCompressionResistancePriority(_ priority: UILayoutPriority, for axis: NSLayoutConstraint.Axis)
【发布时间】:2021-10-13 12:41:50
【问题描述】:

根据我的理解,如果我们设置有两个标签

label1.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) 
label2.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)

然后 label1 的内容将在必要时截断。我想知道何时使用 .required,因为苹果文档中几乎没有解释。

type Property required A required constraint.

static let required: UILayoutPriority 
Discussion Do not specify a layout constraint that exceeds this number.

【问题讨论】:

    标签: ios constraints


    【解决方案1】:

    UILayoutPriority 的值范围可以从01000。提供这些常量是为了方便:

    .required    == 1000
    .defaultHigh ==  750
    .defaultLow  ==  250
    

    您也可以指定其他值。例子:

    let p: UILayoutPriority = UILayoutPriority(rawValue: 251)
    let p: UILayoutPriority = .defaultHigh + 1  // == 751
    let p: UILayoutPriority = .required - 1     // == 999
    

    对于您的特定场景,以下之间没有区别:

    label1.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) 
    label2.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
    
    // or
    
    label1.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) 
    label2.setContentCompressionResistancePriority(.required, for: .horizontal)
    
    // or
    
    label1.setContentCompressionResistancePriority(.required - 1, for: .horizontal) 
    label2.setContentCompressionResistancePriority(.required, for: .horizontal)
    

    等等。只要label1 的优先级小于label2label1 就会先压缩。

    当实际值发挥作用时,或者当您可能想要使用.required 时,就是它们与其他元素交互的时候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 2016-07-23
      • 2018-06-21
      • 2020-05-22
      相关资源
      最近更新 更多