【发布时间】:2015-05-07 19:04:29
【问题描述】:
我有一个TableViewCell 和一个ImageView,我正在这样设置图像:
[self.contentImageView setImageWithURL:thumbnail_url];
contentMode 设置为UIViewContentModeScaleAspectFill,子视图被裁剪。
这对于纵向或横向图像最有效,但UIViewContentModeScaleToFill 实际上更适合横向图像,因为横向图像要丰富得多。
所以,我想通过比较宽度和高度来检测图像的方向,并相应地更改contentMode。
起初,我尝试检查/记录 ImageView.image 属性,在我从 url 设置它之后直接,但它显示为 nil。 不知道为什么...?
接下来,我决定将 NSURL 放入 NSData 对象,然后从该数据创建 UIImage,并使用该 iVar 设置 ImageView 的 image 属性,如下所示:
NSData *data = [NSData dataWithContentsOfURL:thumbnail_url];
UIImage *image = [UIImage imageWithData:data];
[self.contentImageView setImage:image];
// Get image.size etc.
这 - 特别是 NSData 调用 - 大大减慢了 TableViewCell's 的加载速度,所以我想避免它。
所以,我想知道在缩放发生在contentMode 之前,是否有办法进入ImageView 的未裁剪 源图像属性?
【问题讨论】:
-
您使用 AFNetworking 吗?我问是因为您将函数称为“setImageWithURL”。如果是,您是否尝试过这种方法“- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest placeholderImage:(UIImage *)placeholderImage 成功:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))成功失败:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))失败;"并在“成功”块中打印 image.size?
-
@jregnauld 是的,这个方法是 AFNetworking 的一部分 - 抱歉,刚刚注意到这个(不是我的原始代码)......会尝试这个方法......
标签: ios objective-c uiimageview uiimage