UITableViewCell ImageView调整大小 - 选定的行更改图像大小

时间:2015-04-16 14:03:43

标签: ios objective-c uitableview imageview sdwebimage

我正在设置一个表格单元格ImageView,如下所示:

NSURL *url = [[NSURL alloc] initWithString:[account valueForKeyPath:@"Avatar"]];
[cell.imageView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"default.png"]];

然后我使用表格单元子类并调整图像大小并使其像下面一样:

- (void)layoutSubviews {

    [super layoutSubviews];

    self.imageView.bounds = CGRectMake(0,0,32,32);
    self.imageView.layer.cornerRadius = 16;
    self.imageView.clipsToBounds = YES;
}

这实际上很有效,直到我真正点击表格行。然后它会将图像向左移动一些像素。

只有图像不是完美的正方形。示例100x75而不是100x100

我一定在这里丢失一些小东西?这是一张显示偏移量的小图片:

enter image description here

仅供参考我参考这篇文章:How do I make UITableViewCell's ImageView a fixed size even when the image is smaller

修改

我还尝试过这个表格格式cellForRowAtIndexPath

然而,这似乎有效,因为在加载表视图时并非所有图像都被加载,直到我开始滚动

[[SDWebImageManager sharedManager] downloadImageWithURL:url options:0 progress: nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {

    // resize image code here, then set below
    cell.imageView.image = image;
}];

3 个答案:

答案 0 :(得分:0)

在我的情况下,我做了这个

-(void)layoutSubviews
{
    [super layoutSubviews];
    [self layoutIfNeeded];

    self.imageView.layer.cornerRadius = (self.imageView.bounds.size.width / 2.0);
    self.imageView.layer.masksToBounds = YES;

}

我没有在运行时更改边界。希望它有所帮助

答案 1 :(得分:0)

仅供参考我最后创建了一个自定义的UITableViewCell,其UIImageView定义的宽度/高度为32x32,自定义标签基本上模仿了Right Detail视图。

答案 2 :(得分:-1)

试试这个:

- (void)layoutSubviews {

[super layoutSubviews];

self.imageView.frame = CGRectMake(0,self.frame.size.width/2-16,32,32);
self.imageView.layer.cornerRadius = 16;
self.imageView.clipsToBounds = YES;

}

或者您可以尝试设置autoresizingMask