1

我正在使用可扩展的 TableView ( HVTableView ),并在其中设置一些图像,这些图像是从 URL 下载的。问题是图像没有设置为 AspectFill,即使我已经在 Storyboard 和代码中设置了所有内容。

故事板: 在此处输入图像描述

代码:

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

4

2 回答 2

0

好的,我只是进行了一次疯狂的猜测并尝试了子类UITableViewCell化(将UIImageViewand UILabels 设为IBOutlets),现在它可以工作了!这些图像的表现非常完美aspectFill

我猜想获取单元格的内容然后设置项目(如问题所示)不是一个聪明的方法。子类化解决方案!

感谢大家的帮助。

于 2015-12-22T13:07:36.203 回答
0

根据以下评论更新

你介意试试这个吗?

UIImage *image = [UIImage imageWithData:data];
image = [UIImage imageWithCGImage:image.CGImage];

问题不UIImageView在于根据图像大小计算单元格高度的表格视图。

尝试tableView:heightForRowAtIndexPath:在您的表视图控制器中覆盖并返回一个固定值。

于 2015-12-22T11:32:21.233 回答