【问题标题】:Auto layout 4 UILabels vertically with height according to their content/text自动布局 4 个 UILabel,根据其内容/文本垂直高度
【发布时间】:2015-07-25 12:36:17
【问题描述】:

我有一个UITableViewCell,我正在使用UITableViewAutomaticDimension 自动计算行高。

(我正在从 iOS 复制 Facebook cmets 的设计)

我需要将所有 4 个标签的高度调整到其内容的高度。

CC = 内容压缩 CH = 内容拥抱 [水平/垂直]

标签 1:CC = 750/750 CH = 249/750

标签 2:CC = 999/999 CH = 999/999

标签 3:CC = 750/749 CH = 249/749

标签 4:CC = 1000/1000 CH = 1000/1000

这里,标签 2 和标签 4 是最重要的标签。我不希望他们无论如何缩小。标签 1 和标签 3 可以缩小,但有一个限制。(比如说 30px)

我的单元格如下:

我得到了这个结果:

如果有人需要更多信息,请告诉我。

【问题讨论】:

    标签: ios objective-c uitableview autolayout


    【解决方案1】:

    我尝试复制您的表格视图单元格结构,但问题似乎是标签的preferredMaxLayoutWidth 未设置。

    您可以在 Interface Builder 中显式设置它,也可以覆盖表格视图单元格的 updateViewConstraints 方法:

    -(void)updateViewConstraints {
        CGFloat gap = 40.0; // sum of leading and trailing space
        [super updateViewConstraints];
        label.preferredMaxLayoutWidth = self.view.bounds.size.width - gap;
    }
    

    【讨论】:

      【解决方案2】:

      您为 Label2 和 Label4 设置了布局约束 widthLines = 0。见下图:

      Label1top constraint 设置为superview,否则将Vertical Spacing 设置为上述标签。以下是Label3 的大内容和短内容结果。

      编辑:您的自定义单元格如下所示:

      您应该根据元素视图容器更新布局。

      【讨论】:

      • Label3 不错,但是如果我同时在 Label2 和 Label4 中获得动态高度怎么办?
      • 我只是更新我的答案。但不能清楚地向你解释:(
      • 谢谢,我会尽力告诉你的。
      猜你喜欢
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 2013-06-24
      相关资源
      最近更新 更多