UITableView根据内容

时间:2015-07-14 23:27:30

标签: ios uitableview ios7 ios8 autolayout

您好我需要帮助了解如何根据其内容调整单元格大小。

首先,当然我找到了许多链接:

iOS: Multi-line UILabel in Auto Layout

https://www.youtube.com/watch?v=CkvZEJ7dIfw

https://github.com/williamhqs/GSTableViewDynamicHeight

正如我们所说的关于git示例(最后一个链接),我无法理解如何更改某些标签并使其有效。例如,如果我删除UILabel并创建新的并将其与content属性绑定(内容 - 它是底部标签的IBOutlet属性)。我似乎失去了一些设置,而且细胞不会伸展。

所以我想我不太了解如何去做。

我想要了解的内容:

  1. 如何在故事板中或以编程方式设置自动布局。
  2. 我应该以编程方式完成哪一项工作。
  3. 首选尺寸如何影响标签。我们是否每次都需要使用superview债券作为首选尺寸?
  4. 同样在git示例中,我们有一个标签可以改变自己的大小。如果我们有2个带有动态内容的UILabel如何设置呢?

    如果你有一些链接或视频请放在这里,因为我真的卡住了。谢谢!

    我知道这是重复的问题,但我无法理解如何设置它。

1 个答案:

答案 0 :(得分:2)

要使Self Sizing Cells工作,有三个步骤:

  1. 正确设置单元格的约束(最重要的是顶部和底部约束)
  2. 指定表格视图的estimatedRowHeight
  3. 将表格视图的rowHeight设置为UITableViewAutomaticDimension
  4. 对于第2步和第3步,只需在viewDidLoad方法中添加这两行就可以了

    tableView.estimatedRowHeight = 44.0 // or whatever you want
    tableView.rowHeight = UITableViewAutomaticDimension
    

    第1步,这是自我调整过程中最重要的部分 你需要记住的是,“自我调整需要从你的约束中获得它的大小。”

    基本上我们需要确保在这里正确设置单元格的顶部空间和底部空间约束是一个例子:

    self sizing cell

    只有两个带有约束顶部,底部,右侧和左侧空间的标签和容器(见图)UILabels Lines属性为0,因此您允许多行

    我正在处理的项目的另一个例子:

    auto size cell

    底线:

    标签约束应该推动表格视图单元格的大小并使其更高。因此,请始终检查顶部和底部约束。

    此外,您可能会使用多行来处理使用UILabel的问题,因为

      

    UILabel和NSTextField的内在内容大小不明确   多行文字。

    因此请务必始终设置yout标签的preferredMaxLayoutWidth属性:

    - (void)layoutSubviews
    {
        [super layoutSubviews];
        self.contentLabel.preferredMaxLayoutWidth = self.contentLabel.frame.size.width;
    
    }
    

    有关此问题的更多信息,请阅读:

    iOS Autolayout multi line UILabel

    iOS multi-line UILabel in Auto-layout

    preferredMaxLayoutWidth

    有关动态表视图单元格高度的更多信息,这里有一些有用的资源:

    UITableView Tutorial: Dynamic Table View Cell Height

    Understanding Self Sizing Cells and Dynamic Type in iOS 8

    Self Sizing Table View Cells

    Mysteries of Auto Layout, Part 1 (wwdc 2015)