Ho bisogno di caricare un'immagine da un URL e impostarla all'interno di UIImageView; il problema è che non conosco le dimensioni esatte dell'immagine, quindi come posso mostrare correttamente l'immagine?iOS: carica un'immagine dall'URL
risposta
Basta utilizzare la proprietà dimensione del UIImage, ad esempio:
NSURL *url = [NSURL URLWithString:path];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data];
CGSize size = img.size;
Oppure imposta la dimensione desiderata nella visualizzazione dell'immagine e allunga semplicemente l'immagine una volta scaricata per adattarla alla vista dell'immagine. (Dovresti allungare E mantenere l'aspetto, tutto il resto sembra strano) –
ah ok ... ma non capisco come ridimensionare questa immagine per il mio imageView; Mi dedico a creare una miniatura e non ho molto spazio per la mia imageView (max 236 larghezza e max 60 per altezza); in questo spazio dovrei caricare l'immagine dall'URL ma dovrebbe essere proporzionata ... – CrazyDev
Penso che quello che vuoi sia impostare il contentMode di UIImageView su UIContentViewScaleAspectFit. Ma dai un'occhiata alla documentazione. – fbernardo
a 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
a Swift per quanto riguarda utilizzando optional:
var url:NSURL? = NSURL(string: imageString)
var data:NSData? = NSData(contentsOfURL : url!)
var image = UIImage(data : data!)
Questo si bloccherà se il file immagine non si trova nella stringa di immagine specificata. – Suragch
Usa le dichiarazioni if! Questo è un codice non sicuro e si bloccherà se url è nullo –
IN SWIFT 3.0
Il thread principale deve essere sempre libero, quindi serve l'interfaccia utente e le interazioni dell'utente.
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()
}
}
per scaricare l'immagine asincrono con biblioteca Kingfisher è possibile seguire questo passaggio, url: 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
}
}
}
}
è anche possibile scaricare un'immagine con predefinito 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. Carica immagine dal framework iOS 8
- 2. Carica l'immagine sul servizio web in ios
- 3. tempo rimanente fino carica è completa, iOS
- 4. Carica ABRecordRef da ABRecordID in iOS
- 5. iOS 7 UIWebView non carica la pagina web
- 6. AWS S3 Carica l'immagine nell'app per iOS Bucket
- 7. Carica da immagine IOS a .net app: Ruota
- 8. javascript carica blocco pagina carica
- 9. PhoneGap su WP7 non carica le immagini
- 10. iPhone carica file multipart utilizzando AFNetworking
- 11. WKWebView non carica l'URL https?
- 12. Carica più file FTP
- 13. pyparsing - carica ABNF?
- 14. Carica dinamicamente un CBitmap
- 15. Carica jQuery dinamicamente
- 16. FullCalendar non carica eventi
- 17. Carica bitmap con Picasso
- 18. dev_appserver.py non carica appengine_config.py
- 19. Carica JSON tramite WebClient
- 20. Carica iframe quando visibile
- 21. Carica file nell'app Express.js
- 22. carica show_ads.js una volta
- 23. Carica UserControl in TabItem
- 24. IdeaVim non carica .vimrc?
- 25. ASIHTTP: carica UIImage?
- 26. Carica file manifest cache
- 27. XmlDocument - carica da stringa?
- 28. bootstrap angolare non carica
- 29. Carica file su ftp
- 30. UICollectionView carica più dati
Perché sarebbe un problema? Una volta che l'immagine è stata scaricata, ne conoscerai le dimensioni. Puoi anche fare in modo che l'immagine visualizzi la dimensione desiderata e allungare l'immagine per adattarla. –