使用 URL 设置 UIImageView
Posted
技术标签:
【中文标题】使用 URL 设置 UIImageView【英文标题】:Set UIImageView using URL 【发布时间】:2017-03-11 18:11:09 【问题描述】:我正在使用 UIImageView 设置图像:
[self.imageView setImageWithURL:[NSURL URLWithString:urlString] placeholderImage:[UIImage imageNamed:@"random_image"]];
我可以按预期在手机上看到图像。
但是,如果我使用没有占位符参数的方法
[self.imageView setImageWithURL:[NSURL URLWithString:urlString]];
或者将 placeholderImage 作为 nil 传递
[self.imageView setImageWithURL:[NSURL URLWithString:urlString] placeholderImage:nil];
然后图像没有设置,我的 imageView 是空白的。我了解占位符图片用于“代表适合在您的扩展程序 UI 中临时显示的资产的当前状态。”。
我不明白它的缺席会对我产生怎样的影响。有什么指点吗?
【问题讨论】:
检查您的图像视图大小可能是 (0;0) 占位符图像为您的图像视图提供了固有大小,这有助于在占位符范围内替换实际图像。如果没有给图像视图提供高度/宽度限制,它的大小将为 (0, 0)。 我已经在情节提要中用非 (0,0) 声明了 imageView。但是你们是对的,在代码中帧大小是 0,0。但即使我手动给出帧大小,图片也不会显示。有没有其他方法来定义“内在尺寸”? 【参考方案1】:如果您设置默认占位符图像,则 imageview 获取宽度和夜晚。否则 imageview 框架可能是 (0,0)。
或者
应该使用 NSURLConnection 异步下载图片,并且只有在完全下载后才能将其转换为 UIImage 并分配给图片视图
[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:imageUrl]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
ImageViewName.image = [UIImage imageWithData:data];
];
【讨论】:
感谢您的帮助。我尝试使用 CGRectMake 方法添加框架,还尝试了您的第二个解决方案。没用。【参考方案2】:我发现了问题。我在 UITableViewCell 中添加了一个名为 imageView 的图像视图。显然, UITableViewCell 已经有一个同名的属性。我将 myImageView 的名称更改为 cellImageView,现在,我不再需要占位符参数了!话虽如此,我还是不明白屏幕后面发生了什么!
【讨论】:
【参考方案3】:我希望这些代码对你有所帮助....
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:
[NSURL URLWithString:@“image URL”]]];
dispatch_sync(dispatch_get_main_queue(), ^
[[cell myimage] setImage:image];
);
);
【讨论】:
以上是关于使用 URL 设置 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章