我正在使用可扩展的TableView(HVTableView),其中我正在设置一些从URL下载的图像。问题是即使我在Storyboard中设置了所有内容以及代码,图像也没有设置为AspectFill。
代码:
UIImageView *imageView = (UIImageView *)[cell viewWithTag:0];
if (object.imageFile) {
[object.imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
UIImage *image = [UIImage imageWithData:data];
[imageView setClipsToBounds:YES];
[imageView setContentMode:UIViewContentModeScaleAspectFill];
[imageView setImage:image];
}
else [imageView setImage:[UIImage imageNamed:@"placeholder"]]; //initiL state
}];
}
else {
[imageView setImage:[UIImage imageNamed:@"placeholder"]];
}
结果:
如果我使用本地图片,那么它们会完美显示,如square和aspectFill或设置的contentMode
答案 0 :(得分:0)
你介意试试吗?
UIImage *image = [UIImage imageWithData:data];
image = [UIImage imageWithCGImage:image.CGImage];
问题不在于 UIImageView
,而在于基于图像大小计算单元格高度的表视图。
尝试覆盖表视图控制器中的 tableView:heightForRowAtIndexPath:
并返回固定值。
答案 1 :(得分:0)
好吧,我只是玩了一个疯狂的猜测并尝试了子类化UITableViewCell
(将UIImageView
和UILabel
设为IBOutlets
),现在它可以了!图像的表现完全符合aspectFill
。
我想获取单元格的内容然后设置项目(如问题中所示)并不是一种聪明的方法。对解决方案进行子类化!
感谢大家的帮助。