iOS消息单元宽度/高度使用自动布局
目标
我正在尝试使用自动布局创build一个dynamic消息单元格。
我所试过的
单元格的定位正确,大部分情况下,自动布局给定了以下限制:
问题
我的第一个问题是消息标签(可复制标签)宽度受到限制。 这似乎是通过使用setPreferredMaxLayoutWidth:
解决setPreferredMaxLayoutWidth:
如此问题中所述 。
身高仍然是一个问题。 正如你所看到的,消息泡沫仍然被切断。 另外,我不确定如何确定表视图的消息单元高度。
我预计自动布局不知何故只是工作。 我已经阅读了这里的答案 ,但似乎很多的步骤。
问题
首先,自动布局比传统的帧algorithm更复杂吗?
其次,使用自动布局,我怎样才能确定最终的单元格的高度?
我完全使用自动布局,你所说的是一个问题。 我不想修改为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/KeepLayoutpipe理自动布局更简单。
在iOS 8上可以在AppCoda上阅读
基本上:
- 将标签线设置为0。
- 设置行高度
UITableViewAutomaticDimension