2012-02-21 53 views
2

我有一个相当简单的TableViewController列出了可以在收集时进行检查的项目。我已经在每个单元格中成功实现了一个单词包装标签,并更新了heightForRowAtIndexPath,使每一行都是合适的高度。这是正常工作:使用多行内容时的accessoryView对齐方式查看

注:我已经设置为测试目的而细胞的内容查看一个花哨的背景颜色。

enter image description here

问题是当我尝试添加复选标记按钮,为accessoryView的每一个细胞:

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像素,就会超过一行。

enter image description here

上面的例子使用44x44作为按钮的宽度。

任何人都可以解释这里发生了什么?为什么在contentView是2线和1线时会有不同的对齐方式?事实上,对于文本使用的每条额外的行,对齐越来越关闭。如果有帮助,我可以添加行文本的代码。

+0

附加信息 - 我确定这是造成问题的高度,而不是宽度。如果我将它设置为44 x 26,它看起来没问题。超过26岁,这是错位的。 – 2012-02-21 02:39:28

+0

您是否尝试相应地设置按钮的“autoresizingMask”? – 2012-02-21 03:37:07

回答

3

我发现,这可以通过设置按钮的高度在附件视图以匹配将用于该行计算来解决。

所以,在heightForRow使用的代码:atIndexPath:应该到的cellForRowAtIndexPath被复制和用于设置按钮的高度。

0

我有同样的问题,不幸的是我也不能解释的奇怪行为,我也没有解决这个问题。但是,我提出了一些观点,可能有助于其他人为这个问题而努力。

我使用的是UIImageView作为我的细胞附属视图,并结束了与图像尺寸摆弄周围。最终工作的图像大小约为16x16像素或更低。

正如我只是想一个相当微小的形象,这为我工作。