4

在我的自定义 tableViewCell 中,我有一个填充整个单元格的 imageView(不是 tableViewCell 的默认 imageView)。它是在 IB 中(和通过代码)使用 contentMode 设置的UIViewContentModeAspectFill,并且它剪辑到边界。每当我将 imageView 的图像更改为加载的图像时[UIImage imageNamed:...],它都会根据需要调整大小并适合 imageView。但是,当使用 加载图像集时[UIImage imageWithData:...],图像已设置,但未调整大小。

使用数据本身加载图像的代码在后台线程中运行,如下所示:

- (void)getImage:(NSString *)URL {
    NSError *error = nil;
    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:URL] options:NSDataReadingMapped error:&error]];
    if (!error){
        [self.thumbView setImage:image];
        [self.thumbView setContentMode:UIViewContentModeScaleAspectFill];
    }
}

我尝试在主线程中设置图像layoutSubviews,但它总是产生相同的结果——它不会调整大小以填充 imageView。我将图像 (JPG) 添加到应用程序包中,并使用 以编程方式设置它[UIImage imageNamed:...],它可以工作,但应用程序必须从 URL 获取数据。

我还尝试使用 UIImageView+AFNetworking 类来设置图像异步而不是创建自己的线程,但这也不起作用。

为什么从数据加载图像时不尊重 UIImageView 的 contentMode?任何帮助表示赞赏。JPEG 和 PNG 都不起作用。

4

1 回答 1

1

如果其他人偶然发现了同样的问题,这就是我为解决它所做的。

我在 IB 中新建了一个 imageView,去掉了旧的,更改了 contentMode-value 和 clipsToBounds-value。在 tableViewCell.m 初始化代码中,我设置了占位符图像,瞧——一切都像魅力一样。

虽然我真的不知道是什么原因造成的,但可能是清除图形内容复选标记设置错误(哎呀)。

于 2013-07-28T09:47:36.173 回答