我正在尝试学习自动布局,最后我想在发生这种情况时我正在抓住它.我正在玩原型细胞和标签.我想要一个
titleLbl- 图片中的蓝框moneyLbl- 图片中的绿色框subTitleLbl- 图中的红色框到目前为止我有这个:

我想要实现的是:
正如您所看到的,除了最后一行中的示例之外,这几乎都可以正常工作.我试图对此进行研究,从我可以收集的内容来看,这与内在的内容大小有关.网上有很多帖子推荐设置setPreferredMaxLayoutWidth,我已经在多个地方做了这个titleLbl并且没有任何效果.只有在硬编码时才能180得到结果,但它还在文本顶部/下方的其他蓝色框中添加了空格/填充,大大增加了红色/蓝色框之间的空间.
这是我的约束:
标题:

钱:

字幕:

基于我与其他文本样本一起运行的测试,它看起来确实使用了故事板中显示的宽度,但任何纠正它的尝试都不起作用.
我创建了一个单元格的ivar并用它来创建单元格的高度:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
[sizingCellTitleSubMoney.titleLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"title"]];
[sizingCellTitleSubMoney.subtitleLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"subtitle"]];
[sizingCellTitleSubMoney.moneyLbl setText:[[tableViewData objectAtIndex:indexPath.row] objectForKey:@"cost"]];
[sizingCellTitleSubMoney layoutIfNeeded];
CGSize size = [sizingCellTitleSubMoney.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size.height+1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MATitleSubtitleMoneyTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifierTitleSubTitleMoney];
if(!cell)
{
cell = [[MATitleSubtitleMoneyTableViewCell alloc] init];
} …Run Code Online (Sandbox Code Playgroud) 我有自定义的UILabel,可以在iOS6和iOS7上正常使用.但是在iOS8上,这个标签的(void)layoutSubviews方法永远不会被调用.我用initWithFrame创建了这个标签,所以应该调用这个方法 - 并在另一个iOS版本上调用它.iOS8中的autoLayout系统会发生什么?