2016-02-04 5 views
13

मैं एक UIImage प्राप्त करने के बजाय केवल Kingfisher libraryकेवल किंगफिशर पुस्तकालय

साथ एक सामान्य UIImageView लोड हो रहा है यह एहसास करने के लिए मैं UIImageView के साथ एक समाधान कार्यान्वित की जरूरत के साथ UIImage प्राप्त करें:

let imageView = UIImageView() 

imageView.kf_setImageWithURL(NSURL(string: cpa.imageName)!, placeholderImage: nil, 
     optionsInfo: [.Transition(ImageTransition.Fade(1))], 
     progressBlock: { receivedSize, totalSize in 
      print("\(receivedSize)/\(totalSize)") 
     }, 
     completionHandler: { image, error, cacheType, imageURL in 
      anView!.image = image //anView IS NOT an UIImageView 
      anView!.frame.size = CGSize(width: 15.0, height: 15.0) 
      print("Finished") 
    }) 

इस कोड को पूरी तरह से काम करता है, लेकिन मैं इसे क्लीनर तरीके से करना चाहता हूं। क्या इस पुस्तकालय में केवल एक यूआईएममेज प्राप्त करने के लिए कोई तरीका है? Async और कैश

उत्तर

26

इसके लिए आप विधि KingfisherManager का उपयोग कर सकते हैं।

हो सकता है कि कुछ इस तरह:

KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil, completionHandler: { image, error, cacheType, imageURL in 
    print(image) 
}) 
+2

Annoyingly स्विफ्ट 3 'KingfisherManager.shared.retrieveImage (साथ में नाम बदला: यूआरएल! , विकल्प: शून्य, प्रगतिब्लॉक: शून्य) {(छवि, त्रुटि, कैश टाइप, imageURL) ->() प्रिंट (छवि) } ' –

+0

क्या यह छवि को कैश भी करता है? – DoesData

+1

@DoesData हाँ यह –

4
नई स्विफ्ट 3 संस्करण आप ImageDownloader उपयोग कर सकते हैं के साथ

:

ImageDownloader.default.downloadImage(with: url, options: [], progressBlock: nil) { 
    (image, error, url, data) in 
    print("Downloaded Image: \(image)") 
} 
+3

यह इस [लाइन] के अनुसार कैश का लाभ नहीं उठाएगा (https://github.com/onevcat/Kingfisher/blob/743e3f2a54408de212d8ec74a5c91747b6a26f7e/Sources/ImageDownloader.swift#L288) 'cachePolicy: .reloadIgnoringLocalCacheData' जो उपयोग करने का बिंदु है Kinfisher किसी भी अन्य सरल विधि पर –

संबंधित मुद्दे