Назад к вопросам
Junior
127
questionbank
Как загрузить изображение из интернета и отобразить его в ImageView после нажатия на кнопку?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
- Добавить URL изображения.
- Создать URLSessionTask для загрузки данных.
- В completionHandler задачи преобразовать Data в UIImage.
- Обновить UIImageView на главном потоке.
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("Загрузить изображение", for: .normal)
loadButton.addTarget(self, action: #selector(loadButtonTapped), for: .touchUpInside)
}
@objc func loadButtonTapped() {
loadImageFromURL("https://ссылка_на_ваше_изображение.png") // Замените на реальную ссылку
}
func loadImageFromURL(_ urlString: String) {
guard let url = URL(string: urlString) else {
print("Неверный URL")
return
}
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Ошибка загрузки: \(error.localizedDescription)")
return
}
guard let data = data else {
print("Нет данных")
return
}
guard let loadedImage = UIImage(data: data) else {
print("Не удалось создать изображение из данных")
return
}
// Обновляем UI на главном потоке
DispatchQueue.main.async {
self.imageView.image = loadedImage
}
}.resume() // Запускаем задачу
}
}