स्विफ्ट का उपयोग करके आईओएस में एक छवि लोड करने के लिए हम साधारण डेटा कार्य सत्र का उपयोग करेंगे। छवि को पृष्ठभूमि में लोड करने की आवश्यकता है क्योंकि यह किसी भी आकार का हो सकता है और हम नहीं चाहते कि यह हमारे मुख्य दृश्य के संचालन को रोक दे।
इसे एक उदाहरण की मदद से देखते हैं। एक खाली प्रोजेक्ट बनाएं और एक खाली इमेज व्यू जोड़ें।
इसका आउटलेट बनाएं और फिर हम URL से इमेज प्राप्त करने के लिए कोड लिखेंगे। इस समय हमारा आवेदन इस तरह दिखता है।
अब, URL से चित्र प्राप्त करने के लिए कोड जोड़ें।
func getData (url से:URL, पूर्णता:@escaping (डेटा?, URLResponse?, त्रुटि?) -> ()) { URLSession.shared.dataTask (साथ:url, पूर्णताहैंडलर:पूर्णता)। फिर से शुरू ()} func downloadImage (url से:URL) {getData (से:url) {डेटा, प्रतिक्रिया, गार्ड में त्रुटि डेटा =डेटा, त्रुटि ==nil अन्य {वापसी} DispatchQueue.main.async () {self.image =UIImage ( डेटा:डेटा) } }}
जब हम इस कोड को चलाते हैं, तो यह यूआरएल से इमेज डाउनलोड करेगा, हम इमेज ऑब्जेक्ट बना सकते हैं और नए ऑब्जेक्ट के साथ अपने imgView को इनिशियलाइज़ कर सकते हैं।
लेकिन आइए इस पद्धति का एक विस्तार बनाएं और उपयोग करें।
<पूर्व>विस्तार UIImageView { func getData (url से:URL, पूर्णता:@escaping (डेटा?, URLResponse?, त्रुटि?) -> ()) { URLSession.shared.dataTask (साथ:url, पूर्णताहैंडलर:पूर्णता)। फिर से शुरू करें ()} func downloadImage (url से:URL) {getData (से:url) {डेटा, प्रतिक्रिया, गार्ड में त्रुटि डेटा =डेटा, त्रुटि ==nil अन्य {वापसी} DispatchQueue.main.async () {self.image =UIImage(डेटा:डेटा) } }}}अब, हमारे व्यूडिडलोड (या कोई अन्य जगह जो आपको पसंद हो) में निम्नलिखित कोड जोड़ें।
ओवरराइड func viewDidLoad() {super.viewDidLoad() url =URL दें (स्ट्रिंग:"https://static.inनिर्भर.co.uk/s3fs-public/thumbnails/image/2017/09/12/11/ naturo-monkey-selfie.jpg?w968h681") self.imgView.downloadImage(from:url!)}
जब हम इस कोड को अपने डिवाइस पर चलाते हैं, तो हमें निम्न परिणाम मिलते हैं।