我正在尝试将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的高度和宽度应该小于单元格的高度和宽度,所以我不认为这是推动它的原因。
我暂时为我的图片添加了一个边框,只是为了看看它有多少,我觉得这很令人不安。你在图片中看到的代码是添加到自定义单元类的唯一代码。
这就是我得到的:
答案 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;
}
结果如下:
或者您可以使用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;