Никогда не используйте dataWithContentsOfURL принести не локальный URL. Он предназначен для загрузки данных из файлов, а не сетевых адресов. Хотя он будет загружать данные из сетевых URL-адресов, он делает это синхронно в текущем потоке, и если вы работаете с объектами UIView, это означает, что это находится в основном потоке.
Если вы делаете это так, как вы пытаетесь сделать это выше, ваше приложение будет отклонено из App Store с почти 100% уверенностью, потому что в медленной сети загрузка изображения будет блокироваться достаточно долго, чтобы iOS убить приложение прямо для блокировки основного потока слишком долго.
Чтобы сделать запрос к сети, вы должны использовать NSURLSession
(или NSURLConnection
если вы пытаетесь поддерживать обратную совместимость с прошивкой 6 и выше), чтобы получить изображение, а затем, когда запрос по завершению загрузки, создать UIImage
с этими данными, а затем вызовите setImage
на уже отображаемом UIImageView
(который должен показывать какую-то иконку «загрузка» до этой точки).
Возможно, было бы проще использовать одну из многих сторонних сетевых библиотек, которые предоставляют классы специально для того, чтобы сделать загрузку сетевого изображения менее болезненной.
Сказав это, я не понимаю, почему ваш существующий код ничего не показывает (при условии, что сервер отвечает достаточно быстро), если у вас нет проблемы с границами или с ограничениями автоопределения, из-за которых само изображение не должно быть видимый или подлежащий обрезанию.
Это 'data' nil? Является ли '[UIImage imageWithData: data]' nil? – Larme
код полностью верный. Просто скопируйте код в мой проект, и изображение будет отображаться без каких-либо проблем. –
Изображение Goog, кстати. –