在UItableViewCell中居中UIImageView不起作用,如何修复?

时间:2011-11-28 11:28:40

标签: iphone ios uitableview uiimageview

我可以将单元格子类化并解决问题,但我想知道为什么这不起作用。

我在单元格中设置了一个图像,然后在这个方法中,我将图像向右移动:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
        [cell.imageView setFrame:CGRectMake(cell.contentView.bounds.size.width/2 - cell.imageView.frame.size.width/2 + 100,
                                            cell.contentView.bounds.size.height/2 - cell.imageView.frame.size.height/2,
                                            cell.imageView.frame.size.width,
                                            cell.imageView.frame.size.height)];
        NSLog(@"center: %@", NSStringFromCGPoint(cell.imageView.center));
        NSLog(@"frame: %@", NSStringFromCGRect(cell.imageView.frame));
}

注意我添加的+100以确保它在右边。

当我检查控制台时,它表示:

中心:{250,57.5}

框架:{{150,7.5},{200,100}}

然而输出是这样的:

grouped cell image

图像仍然与左侧对齐。这可以改变,如果是这样,怎么办?

2 个答案:

答案 0 :(得分:3)

如果你去UITableViewCell的头文件,你会发现......

> // Content.  These properties provide direct access to the internal
> label and image views used by the table view cell.  These should be
> used instead of the content properties below.
> @property(nonatomic,readonly,retain) UIImageView  *imageView
> __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);   // default is nil.  image view will be created if necessary.

所以你可以看到它对图像视图说readOnly属性...我认为这解释了你无法移动imageView。

答案 1 :(得分:1)

您无法移动图像视图。解决方案是或者子类化并在drawRect中执行您自己的绘制,或者将子视图添加到cell.contentView。

编辑:

  

如果设置了图像,它将出现在单元格的左侧   任何标签。 UITableViewCell会在您创建图像视图对象   创造细胞。

来自UITableViewCell Class Reference