修复了UITableViewCells中ImageViews的填充?

时间:2013-01-11 21:54:13

标签: ios cocoa-touch uitableview imageview

我正在尝试将UIImageView置于我UITableView的其中一个单元格中。为此,我必须创建UITableViewCell的子类,并更新imageView-(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的高度和宽度应该小于单元格的高度和宽度,所以我不认为这是推动它的原因。

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

这就是我得到的: Result

2 个答案:

答案 0 :(得分:2)

  

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

YUP!

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

答案 1 :(得分: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;
}

结果如下:

enter image description here

或者您可以使用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;