我有一个相当简单的TableViewController列出了可以在收集项目时检查的项目。我已经在每个单元格中成功实现了自动换行标签,并更新了heightForRowAtIndexPath,使每一行都是合适的高度。这运作良好:
注意:为了测试目的,我在单元格的contentView上设置了突出的背景色。

当我尝试为每个单元格添加一个复选标记按钮作为附件视图时,问题就来了:

    UIImage *image = [UIImage imageNamed:@"checked.png"];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    CGRect frame = CGRectMake(0.0, 0.0, 44.0, 44.0);
    button.frame = frame;
    [button setImage:image forState:UIControlStateNormal]
    button.backgroundColor = [UIColor redColor];
    cell.accessoryView = button;
由于某些原因,一旦按钮大小超过约26x26像素,我的单元格就跨越了多行,因此对齐方式不太正确。

上面的示例使用44x44作为按钮宽度。
谁能解释这是怎么回事?当contentView是2行而不是1行时,为什么会有不同的对齐方式?实际上,对于文本使用的每一行,对齐方式都在逐渐偏离。如果有帮助,我可以为行文本添加代码。

最佳答案

我发现可以通过在附件视图中设置按钮的高度以匹配将为该行计算的高度来解决此问题。

因此,应将heightForRow:atIndexPath:中使用的代码复制到cellForRowAtIndexPath中,并用于设置按钮的高度。

07-27 22:23