【问题标题】:iOS - set maximum width for UILabel with AutolayoutiOS - 使用自动布局为 UILabel 设置最大宽度
【发布时间】:2016-03-09 09:44:51
【问题描述】:

我有一个UILabel 包含在具有固定大小的UIView 中。 UILabel 具有动态文本。如何确保UILabel 永远不会比包含的 UIView 大?

在使用 AutoLayout 之前,只需使用 AdjustsFontSizeToFitWidth 即可轻松实现,但我无法再使用 Autolayout 实现此功能。

我应该从UILabelUIView 添加什么约束?现在它只是领先对齐。

【问题讨论】:

  • 宽度

标签: ios uiview autolayout uilabel


【解决方案1】:

对于像UILabelcontentHuggingcontentCompressionResistance)这样的视图有一些特殊的方法,但它们已经启用。所以你需要禁用标签的宽度增长到超级视图的宽度。

NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:self.label attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationLessThanOrEqual toItem:self.label.superview attribute:NSLayoutAttributeWidth multiplier:1.0f constant:0.0f];    
[self.label addConstraint:widthConstraint];

【讨论】:

  • 你对这个问题的评论真的很好,只有一件事:我怎样才能调整 UILabel 的字体大小,使其适合我给它的最大宽度?
  • myLabel.adjustsFontSizeToFitWidth = YES; myLabel.minimumScaleFactor = .5f;这对我有用!非常感谢 TImur
【解决方案2】:

我将添加左、上、右约束,如下所示:

在情节提要中,只需点击几下:

  • 选择您的标签
  • 在添加约束面板(右下方)中,选择要添加的约束

【讨论】:

    【解决方案3】:

    拖动标签并调整其大小以适应整个屏幕宽度,可能会在两侧留下一些填充。 设置 4 个约束: 1) 标签的高度。 2) UIView 的顶部空间。 3) 引导空间到 UIView。 4) UIView 的尾随空间。

    最后将Label的horizo​​ntalcompressionResistense优先级设为1000。

    【讨论】:

      【解决方案4】:

      Swift 3 和 4

      var widthConstraint = NSLayoutConstraint(item: label, attribute: .width, relatedBy: .lessThanOrEqual, toItem: label.superview, attribute: .width, multiplier: 1.0, constant: 0.0)
      label.addConstraint(widthConstraint)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-14
        相关资源
        最近更新 更多