【问题标题】:iOS message cell width/height using auto layout使用自动布局的 iOS 消息单元格宽度/高度
【发布时间】:2013-11-29 02:25:53
【问题描述】:

目标

我正在尝试使用自动布局创建动态消息单元格。

我的尝试

在大多数情况下,单元格定位正确,自动布局具有以下约束:

问题

我的第一个问题是消息标签(可复制标签)的宽度受到限制。这似乎可以通过使用setPreferredMaxLayoutWidth: 来解决,如this question 中所述。

身高仍然是个问题。如您所见,消息气泡仍在切断。另外,我不确定如何确定表格视图的消息单元格高度。

我希望自动布局能够以某种方式正常工作。我读过answer here,但似乎步骤很多。

问题

首先,自动布局是否比传统框架算法更复杂?

其次,使用自动布局,如何确定结果单元格的高度?

【问题讨论】:

  • 作为post you linked to的作者,我可以建议你看看this sample project on GitHub吗?表格视图中的自动布局绝对不能“正常工作”(不幸的是),但要掌握它并不难。一旦您了解了概念方面,我对该帖子的详细解释比所需的代码要复杂得多。
  • 反对的选民愿意分享吗?
  • @smileyborg,谢谢。我整个下午都在完成你的演示。不幸的是,它仍然没有完全正确地扩展 message 标签。
  • 所有示例项目代码都有意义吗?您将不得不提供有关您遇到的问题的更多细节,和/或(理想情况下)还提供代码示例或示例项目。很高兴为您提供更多信息。顺便说一句,我敢打赌,这是您的约束配置不正确并导致了问题。从 IB 调试它们可能非常困难 - 您是否尝试过在代码中创建它们(就像在那个示例项目中一样)?
  • 使用您的项目作为模板,我尝试在代码中重新创建一个简单版本的消息气泡。它不起作用。因此,我放弃了自动布局并使用CGRect 数学来完成所有工作。因此,这个问题仍然没有答案。如果我弄明白了,我会在 GitHub 上发布一个示例项目。

标签: ios uitableview autolayout


【解决方案1】:

我完全使用自动布局,你所说的有点问题。 我不想为了 UITable 的性能目的而修改计算内在大小的方式。

所以我用了一个非常简单的方法,最后是正确的。如果您的单元格很简单,那没关系,如果您的单元格包含多个可变文本,则可能会变得如此困难。

我正常定义了我的单元格,您可以在其中放置一个适合插图的 UILabel(没问题)。 然后,在您的表格数据源中,您直接定义单元格的高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return [TEXTOFYOURCELL sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, 1000)].height + 31; // Here it's defined for 15 of top and bottom insets, define +1 than the size of the cell is important.
}

编辑: 这里有一些关于单元格中 UILabel 的代码(在 init 方法中)。

__titleLabel = [UILabel new];
__titleLabel.numberOfLines = 0;
[self.contentView addSubview:__titleLabel]; // adding to contentView rather than self is very important !
[__titleLabel keepInsets:UIEdgeInsetsMake(0, 15, 0, 15)];

我使用这个 API:https://github.com/iMartinKiss/KeepLayout 来更简单地管理自动布局。

【讨论】:

  • 请提供更多关于 UILabel 的详细信息,适合 insets
  • 做到了,如果对你有帮助,请告诉我
  • 谢谢。我熟悉sizeWithFont:constrainedToSize:。我的问题是关于自动布局解决方案。也许那个答案是你做不到
  • 至少,我的回答是如果可能的话,我也想知道 :D
【解决方案2】:

这在 iOS 8 上是可能的,可以在 AppCoda 上阅读

基本上:

  • 将标签线设置为 0。
  • 设置行高UITableViewAutomaticDimension

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    相关资源
    最近更新 更多