1

我试图将UIImageView我的UITableView. 为此,我必须创建 的子类UITableViewCell,并更新imageViewin的位置-(void)layoutSubviews。我尝试了几种方法,基本上是这样的:

-(void)layoutSubviews
{
    [super layoutSubviews];

    self.imageView.center = self.center;
}

这不像我想要的那样工作。似乎有一个固定的填充imageView或类似的东西,导致imageView之后的中心实际上是在单元格实际中心的右侧有点下降。如果我写类似的东西self.imageView.center.x = self.center.x;,图像的高度居中,但有点太靠右了。所以我想我必须写一些类似self.imageView.center.x = self.center.x - someValue;的东西才能把它弄好,如果填充是问题的话。我在哪里可以找到这个填充,它是否适合不同的设备?或者也许没有填充,这是由其他原因引起的?

顺便说一句,它是一个分组的tableView,如果这可能与它有关..

而且, UIImageView 的高度和宽度应该小于单元格的高度和宽度,所以我不认为这是将其推低的原因。

我暂时为我的图像添加了一个边框,只是为了看看它偏离了多少,我认为这很令人不安。你在图像中看到的代码是添加到自定义单元格类中的唯一代码。

这就是我得到的: 结果

4

2 回答 2

2

顺便说一句,它是一个分组的 tableView,如果这可能与它有关..

对!

分组的表格视图有填充 - 或边距 - 不管它是什么,它都很不方便。我没有在这里发布代码答案,因为有很多独特的方法可以处理您的问题,但是知道 UITableView 肯定会为分组表视图执行此操作是一个开始。这里还有其他帖子可以帮助您找到处理由分组表视图引起的间距的方法。祝你好运!

于 2013-01-13T01:21:29.347 回答
1

这对我有用:

- (void)layoutSubviews
{
    [super layoutSubviews];
    self.imageView.center = self.contentView.center;
    self.imageView.layer.borderColor = [UIColor blackColor].CGColor;
    self.imageView.layer.borderWidth = 2.0;

    self.contentView.layer.borderColor = [UIColor greenColor].CGColor;
    self.contentView.layer.borderWidth = 2.0;
}

这是结果:

在此处输入图像描述

或者,您可以使用backgroundView

UIView *bg = [[UIView alloc] initWithFrame:self.frame];
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon"]];

[bg addSubview:img];
img.center = bg.center;

self.backgroundView = bg;
于 2013-01-12T23:24:24.137 回答