2016-10-06 28 views
20

bir arka plan iş parçacığı çalıştırın.Böyle giderse bir işleve sahip Swift 3

Swift2GDC yöntemlerini denedim, ancak işe yaramadı.

Swift3 konusundaki konudaki herhangi bir şey değişti mi?

Teşekkür ederiz!

+1

http://swiftable.io/2016/06/dispatch-queues-swift-3/ –

+0

@ New16 Zaten denedim, hatta uyumlu değil –

+3

Olası çoğaltılabilir [Swift 3'te nasıl dispatch_inync, dispatch_after, dispatch_after, vb?] (Http://stackoverflow.com/questions/37801370/ nasıl-do-ı gönderme senk-gönderme zaman uyumsuz-gönderme-sonrası vb-in-hızlı-3). –

cevap

51

Arka planda görüntü yüklemek tamam değil, ancak arka plan iş parçacığı üzerinde UI güncellemeleri gerçekleştirmek tamam değil. Bu yüzden işlev iki iş parçacığı içermelidir.

func setupImageViewWithURL(url: URL) { 
    var image: UIImage? = nil 

    DispatchQueue.global().async { 
     do { 
      try image = UIImage(data: Data(contentsOf: url))! 
     } catch { 
      print("Failed") 
     } 
     DispatchQueue.main.async(execute: { 
      if image != nil { 
       image = self.imageWithImage(sourceImage: image!, scaledToWidth: UIScreen.main.bounds.size.width) 
       self.imageImageView.image = image 
       self.imageImageView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: (image?.size.height)!) 
      } 
     }) 
    } 
} 
+0

'ImageWithImage' görüntüyü kırpmadan geçiren bir yöntemdir, arka plan iş parçacığı üzerinde yapılabilir mi? –

+0

@ FS.O6, Bunun sorun olduğunu düşünmüyorum. Bunu test edebilirsin. –

+0

Tamam, harika. Teşekkürler! –

0

DispatchQueue.global (QoS: .background) .async {

}