【问题标题】:Constraints for dynamically size uilabel width programmatically以编程方式动态调整 uilabel 宽度的约束
【发布时间】:2021-01-04 04:29:25
【问题描述】:

我有两个完全以编程方式设置的标签。标签二应始终靠在标签一的右边缘(它们之间有一个小空间)。标签一的宽度设置为等于其内容大小,除非它达到最大宽度。视觉上:

|标签一| |标签二|

我需要以下约束:

  1. 标签一个应该调整宽度,除非它达到最大尺寸。

  2. 标签二应始终位于标签一的右边缘

如何以编程方式设置这些约束?

【问题讨论】:

    标签: ios swift xcode


    【解决方案1】:

    lessThanOrEqualToConstant widthAnchor 应该可以完成这项工作。

    let labelOne = UILabel()
    labelOne.text = "label1"
    let labelTwo = UILabel()
    labelTwo.text = "label2"
    
    labelOne.translatesAutoresizingMaskIntoConstraints = false
    labelTwo.translatesAutoresizingMaskIntoConstraints = false
    
    view.addSubview(labelOne)
    view.addSubview(labelTwo)
    
    NSLayoutConstraint.activate([
        labelOne.topAnchor.constraint(equalTo: view.topAnchor),
        labelOne.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        labelOne.widthAnchor.constraint(lessThanOrEqualToConstant: 100),
        
        labelTwo.leadingAnchor.constraint(equalToSystemSpacingAfter: labelOne.trailingAnchor, multiplier: 1),
        labelTwo.topAnchor.constraint(equalTo: view.topAnchor)
    ])
    

    【讨论】:

      【解决方案2】:

      我同意@Kevvv 的回答,但是您还必须将 labelTwo 的尾随约束分配给视图的尾随,因为如果 labelTwo 的宽度会在内容大小更大时增加。

      只需添加一个或多个约束

      labeltwo.trailingAnchor.constraint(greaterThanOrEqualTo: view.trailingAnchor)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-04
        • 1970-01-01
        • 2014-01-14
        • 1970-01-01
        • 2017-07-08
        • 2013-06-23
        • 1970-01-01
        相关资源
        最近更新 更多