在 UItableViewCell 中居中 UIImageView 不起作用,如何解决?

Posted

技术标签:

【中文标题】在 UItableViewCell 中居中 UIImageView 不起作用,如何解决?【英文标题】:Centering UIImageView in UItableViewCell doesn't work, how to fix? 【发布时间】:2011-11-28 11:28:40 【问题描述】:

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

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

- (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

但是输出是这样的:

图像仍与左侧对齐。这可以改变吗?如果可以,如何改变?

【问题讨论】:

【参考方案1】:

如果你去 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。

【讨论】:

【参考方案2】:

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

编辑:

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

来自UITableViewCell Class Reference

【讨论】:

你能指出这在文档中是在哪里得到确认的吗?我找遍了,找不到任何东西。

以上是关于在 UItableViewCell 中居中 UIImageView 不起作用,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 中居中视图?看起来以 UI 层次结构为中心,但不在实际应用程序中?

如何让文本在可滚动的 UILabel 中居中?

UIImageView 没有动画

重新加载数据时 TableViewCell 中的动画

在 UIView 中居中 UIImageView

在 UIScrollView 中居中 UIButtons