我需要从url加载图片并将其设置在UIImageView中;问题是我不知道图像的确切大小,那我该如何正确显示图像?iOS:从url加载图片
44
A
回答
109
只需使用的UIImage的大小属性,例如:
NSURL *url = [NSURL URLWithString:path];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data];
CGSize size = img.size;
13
在SWIFT:
var url = NSURL.URLWithString("http://www.example.com/picture.png")
var data = NSData(contentsOfURL : url)
var image = UIImage(data : data)
image.size // if you need it
9
在迅速关于使用选配:
var url:NSURL? = NSURL(string: imageString)
var data:NSData? = NSData(contentsOfURL : url!)
var image = UIImage(data : data!)
+1
如果图像文件不在指定的图像字符串,这将崩溃。 – Suragch
+0
利用if让我们声明!这是不安全的代码,如果url为零,将会崩溃 –
3
斯威夫特3.0
主线程必须始终保持空闲状态,以便为用户界面和用户交互提供服务。
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
private func fetchImage() {
let imageURL = URL(string: "https://i.stack.imgur.com/9z6nS.png")
var image: UIImage?
if let url = imageURL {
//All network operations has to run on different thread(not on main thread).
DispatchQueue.global(qos: .userInitiated).async {
let imageData = NSData(contentsOf: url)
//All UI operations has to run on main thread.
DispatchQueue.main.async {
if imageData != nil {
image = UIImage(data: imageData as! Data)
self.imageView.image = image
self.imageView.sizeToFit()
} else {
image = nil
}
}
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
fetchImage()
}
}
0
下载与翠鸟库异步图片你可以按照这个步骤,网址:https://github.com/onevcat/Kingfisher:
func imageFromUrl(_ urlString: String) {
if let url = URL(string: urlString) {
ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) {
(image, error, url, data) in
DispatchQueue.main.async {
self.imageView.image = image
}
}
}
}
您还可以下载图片的默认URLSession.shared.dataTask
func imageFromUrl(_ urlString: String) {
if let url = URL(string: urlString) {
let request = URLRequest(url: url)
URLSession.shared.dataTask(with: request) {(data,response,error) in
if let imageData = data as Data? {
if let img = UIImage(data: imageData){
DispatchQueue.main.async {
self.imageView.image = img
}
}
}
}
}
}
相关问题
- 1. 从URL加载图片iOS
- 2. UiCollectionView - 从url加载图片
- 3. 从url加载图片
- 4. 毕加索不从http url加载图片,但从https url加载图片?
- 5. 从ios手机上下载url图片
- 6. 从ios中从webservie中加载图片
- 7. 图片无法从Picasso的URL加载
- 8. Silverlight Windows Phone 7:从URL加载图片
- 9. 从Excel中的URL加载图片
- 10. 图片无法从url加载
- 11. 从url加载图片不工作
- 12. 从oAuth后面的URL加载图片
- 13. Glide无法从url加载图片
- 14. 加载图片从URL问题
- 15. 从url下载图片
- 16. 从Flickr下载图片URL
- 17. C#从URL下载图片
- 18. 从url下载图片
- 19. wp7图片控件无法从url加载图片(AG_E_NETWORK_ERROR)
- 20. Android从url加载图片不直接更新片段
- 21. ios awkard图片加载(url到nsdata到uiimage到uiimageview)
- 22. 在列表视图中从json url加载图片
- 23. 将图像从URL加载到图片框
- 24. c#从URL加载图像到图片盒
- 25. 从图片URL设置壁纸加载到视图中
- 26. 从URL加载.svg图像
- 27. 图像不从URL加载
- 28. ImageSwitcher从url加载图像
- 29. Android从URL加载图像
- 30. 从网址加载图片
为什么那会是一个问题吗?一旦图像下载,你就会知道它的大小。您还可以使图像显示您想要的尺寸,并将图像拉伸以适合。 –