使用自动布局的iOS消息单元格宽度/高度

Jas*_*ary 4 uitableview ios autolayout

目标

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

在此输入图像描述

我试过的

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

在此输入图像描述

问题

我的第一个问题是消息标签(可复制标签)宽度受到限制.这似乎可以通过使用此问题中setPreferredMaxLayoutWidth:描述的方法来解决.

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

我预计自动布局会以某种方式正常工作.我已经在这里阅读了答案,但步骤似乎很多.

问题

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

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

Anc*_*inu 5

我完全使用自动布局,你说的是有点问题.我不想修改为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.
}
Run Code Online (Sandbox Code Playgroud)

编辑: 这里有一些关于单元格中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)];
Run Code Online (Sandbox Code Playgroud)

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