Junior
How to load an image from the internet and display it in an ImageView after pressing a button?
sobes.tech AI
Answer from AI
- Add the image URL.
- Create a URLSessionTask to load the data.
- Convert Data to UIImage in the completionHandler of the task.
- Update UIImageView on the main thread.
import UIKit
class ViewController: UIViewController {
let imageView = UIImageView()
let loadButton = UIButton(type: .system)
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
func setupUI() {
view.addSubview(imageView)
view.addSubview(loadButton)
imageView.translatesAutoresizingMaskIntoConstraints = false
loadButton.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
imageView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
imageView.widthAnchor.constraint(equalToConstant: 200),
imageView.heightAnchor.constraint(equalToConstant: 200),
loadButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
loadButton.topAnchor.constraint(equalTo: imageView.bottomAnchor, constant: 20)
])
loadButton.setTitle("Load Image", for: .normal)
loadButton.addTarget(self, action: #selector(loadButtonTapped), for: .touchUpInside)
}
@objc func loadButtonTapped() {
loadImageFromURL("https://your_image_link.png") // Replace with your actual link
}
func loadImageFromURL(_ urlString: String) {
guard let url = URL(string: urlString) else {
print("Invalid URL")
return
}
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Loading error: \(error.localizedDescription)")
return
}
guard let data = data else {
print("No data")
return
}
guard let loadedImage = UIImage(data: data) else {
print("Failed to create image from data")
return
}
// Update UI on the main thread
DispatchQueue.main.async {
self.imageView.image = loadedImage
}
}.resume() // Start the task
}
}