UIImage未设置为AspectFill - iOS

时间:2015-12-22 10:58:43

标签: ios objective-c uitableview uiimage contentmode

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

故事板: enter image description here

代码:

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"]];
        }

结果:

enter image description here

如果我使用本地图片,那么它们会完美显示,如square和aspectFill或设置的contentMode

2 个答案:

答案 0 :(得分:0)

根据以下评论更新

你介意试试吗?

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

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

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

答案 1 :(得分:0)

好吧,我只是玩了一个疯狂的猜测并尝试了子类化UITableViewCell(将UIImageViewUILabel设为IBOutlets),现在它可以了!图像的表现完全符合aspectFill

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

感谢大家的帮助。