2016-09-26 4 views
2

Итак, после 5 часов солидного ругательства мне удалось преобразовать свой проект из Swift 2.2 в Swift 3. Вещь строится, и все теперь подкованное, с одним небольшим исключением.Swift 3 Загрузка изображения не работает полностью

По какой-то причине мои изображения не являются загрузкой Async, как раньше.

Я записал небольшое видео, чтобы показать вам, и некоторые примеры кода. Я пытаюсь как AlamofireImage, так и просто расширять Swift Extension, оба дают такое же поведение. Как вы можете видеть на видео, изначально изображения вообще не загружаются (также я замечаю, что по какой-то причине исходное изображение по умолчанию не отображается первоначально) Когда я вытягиваю, чтобы обновить представление, они внезапно появляются.

Если кто-либо видел что-либо подобное, я был бы признателен за помощь, если это возможно.

Видео here

примеры кода таким образом: функции расширения

func downloadedFrom(url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit) { 
    contentMode = mode 
    URLSession.shared.dataTask(with: url) { (data, response, error) in 
     guard 
      let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200, 
      let mimeType = response?.mimeType, mimeType.hasPrefix("image"), 
      let data = data, error == nil, 
      let image = UIImage(data: data) 
      else { return } 
     DispatchQueue.main.async() {() -> Void in 
      self.image = image 
     } 
     }.resume() 
} 

func downloadedFrom(link: String, contentMode mode: UIViewContentMode = .scaleAspectFit) { 
    guard let url = URL(string: link) else { return } 
    downloadedFrom(url: url, contentMode: mode) 
} 

Также мое использование AlamofireImage для одной ячейки только для проверки

if nc.returnCommentDetails().image != "" { 
     let url = URL(string: nc.returnCommentDetails().image!) 
     cell.imgProfile.af_setImage(withURL: url!) 
     cell.imgProfile.resizeForProfilePic() 
    } 

ответ

2

Таким образом, после некоторого самоанализа I нашли основную причину проблемы.

В основном проблема связана с расширением, которое я написал для создания кругового обзора изображения, комментируя, что изображения выглядят отлично.

Я буду смотреть на это и предложить альтернативу, если кто-то использовать что-то похожее на это:

func resizeForProfilePic(){ 
    self.layer.borderWidth = 0.1 
    self.layer.masksToBounds = false 
    self.layer.borderColor = UIColor.black.cgColor 
    self.layer.cornerRadius = self.frame.height/2 
    self.clipsToBounds = true 
} 

Использование AlamofireImage кажется отсортировали это

let url = URL(string: nc.returnCommentDetails().image!) 
let placeholderImage = UIImage(named: "DefaultImage")! 
let size = CGSize(width: 100.0, height: 100.0) 
let imageFilter = AspectScaledToFillSizeCircleFilter(size: size) 
cell.imgProfile.af_setImage(withURL: url!, placeholderImage: placeholderImage, filter: imageFilter) 
+0

У меня была та же проблема. Когда я прокомментировал линию с cornerRadius, изображения только что показали – user3126427

1

Чтобы устранить эту проблему, просто добавьте этот линии до слоя.cornerRadius

self.view.layoutIfNeeded() 

Затем все изображения появились с первая нагрузка

+0

Nice. Я, вероятно, буду придерживаться AFImage, так как на самом деле у него много интересных функций. Но хороший крик об этом. Я терял желание жить :) – NodeJustin

Смежные вопросы