【问题标题】:Two UILabels side by side in UITableviewCell programmaticaly with priories in swiftUITableviewCell 中的两个 UILabel 以编程方式并排在 swift 中
【发布时间】:2020-10-27 11:10:23
【问题描述】:

我想以编程方式将 2 个标签并排放置,以强制第二个标签为全尺寸:

使用我当前的代码,根据数据,有时它可以工作,有时状态标签被压碎,有时第一个标签保持在一行中......

目前我有这些约束(部分作为 UITableViewCell):

NSLayoutConstraint.activate([

            /* the 2 labels */
            titleLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: margin),
            titleLabel.topAnchor.constraint(equalTo: topAnchor, constant: midMargin),
            titleLabel.trailingAnchor.constraint(lessThanOrEqualTo: sView.leadingAnchor, constant: -4),
            
            statusLabel.topAnchor.constraint(equalTo: topAnchor, constant: midMargin),
            statusLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -margin),
           
            /* the others views */
            dateLabel.topAnchor.constraint(equalTo: sView.bottomAnchor, constant: midMargin),
            dateLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -margin),
            dateLabel.leadingAnchor.constraint(greaterThanOrEqualTo: descriptionabel.trailingAnchor, constant: 4),
            
            descriptionabel.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: midMargin),
            descriptionabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: margin),
           
            askByTitleLabel.topAnchor.constraint(equalTo: descriptionabel.bottomAnchor, constant: midMargin),
            askByTitleLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: margin),
            askByTitleLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -margin),
            
            askByLabel.topAnchor.constraint(equalTo: askByTitleLabel.bottomAnchor, constant: .midMargin/2),
            askByLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: margin),
            askByLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -margin),
            
            docView.topAnchor.constraint(equalTo: askByLabel.bottomAnchor, constant: midMargin),
            docView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: margin),
            docView.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -midMargin),
            docView.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -.margin)
        ])

问题的想法?

【问题讨论】:

    标签: ios swift uitableview uilabel nslayoutconstraint


    【解决方案1】:

    确保 statusLabel 仅设置为 1 行。为statusLabel 设置拥抱和抗压优先级:

        statusLabel.numberOfLines = 1
        statusLabel.setContentHuggingPriority(.required, for: .horizontal)
        statusLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
    

    titleLabel.trailingAnchor 应该相对于statusLabel.leadingAnchor

        titleLabel.trailingAnchor.constraint(equalTo: statusLabel.leadingAnchor, constant: -4),
            
    

    附注:在开发布局时为视图(和标签)提供对比背景色非常有帮助...在运行时很容易看到它们的框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      相关资源
      最近更新 更多