如何在iOS 8中使用自动布局和自定义单元格

时间:2014-12-16 15:54:39

标签: objective-c uitableview autolayout

我已经使用UILabels设置了自动调整大小单元,在本教程之后iOS8中没有问题: http://useyourloaf.com/blog/2014/08/07/self-sizing-table-view-cells.html

但是我在使用自动调整大小设置UIImageView时遇到了问题。与肖像相比,我需要在横向图像中使用不同尺寸的图像(因此它们保持相同的纵横比)。但每次我得到一个破坏的布局约束错误

"<NSLayoutConstraint:0x14554680 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x14564440(200)]>

由于实际代码有很多不同类型的单元格(都可以使用自动调整大小单元格),我在这里设置了一个蓝色图像视图问题的简单示例:

https://github.com/AdrianMW/ios8autosizingCells

我已经为superview设置了约束,我正在设置高度:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    ImageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kImageCell forIndexPath:indexPath];
    cell.heightConstraint.constant = [self heightForOrientation:self.interfaceOrientation];
    return cell;
}

尝试解决方案

我已经尝试关闭setTranslatesAutosizingMask:根据其他一些建议在单元格上,但当我这样做时,我只是得到一个空白而不是图像。我也尝试添加以下内容:

[cell setNeedsDisplay];
[cell layoutIfNeeded];

我已经看到了提到最重要的sizethatfits:使用旧方法让它在这个单元格上工作,但似乎没有在单元格上调用。

干杯

1 个答案:

答案 0 :(得分:1)

在ImageTableViewCell.xib中,尝试更改约束:

Image View.Bottom EQUAL Superview.Bottom

将优先级从1000更改为999.