সুইফট ব্যবহার করে iOS-এ একটি ছবি লোড করতে আমরা সাধারণ ডেটা টাস্ক সেশন ব্যবহার করব। ছবিটিকে ব্যাকগ্রাউন্ডে লোড করতে হবে কারণ এটি যেকোনো আকারের হতে পারে এবং আমরা চাই না যে এটি আমাদের মূল দৃশ্যের ক্রিয়াকলাপ বন্ধ করুক।
আসুন একটি উদাহরণের সাহায্যে এটি দেখি। একটি খালি প্রকল্প তৈরি করুন এবং একটি খালি চিত্র দৃশ্য যোগ করুন৷
৷এর আউটলেট তৈরি করুন এবং তারপরে আমরা একটি URL থেকে চিত্র পেতে কোডটি লিখব। এই মুহুর্তে আমাদের অ্যাপ্লিকেশনটি এইভাবে দেখায়৷
এখন, একটি URL থেকে ছবি পেতে কোড যোগ করা যাক।
func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) { URLSession.shared.dataTask(with: url, completionHandler: completion).resume() } func downloadImage(from url: URL) { getData(from: url) { data, response, error in guard let data = data, error == nil else { return } DispatchQueue.main.async() { self.image = UIImage(data: data) } } }
যখন আমরা এই কোডটি চালাই, তখন এটি URL থেকে ইমেজ ডাউনলোড করবে, আমরা একটি ইমেজ অবজেক্ট তৈরি করতে পারি এবং নতুন অবজেক্টের সাথে আমাদের imgView শুরু করতে পারি।
তবে আসুন এই পদ্ধতির একটি এক্সটেনশন তৈরি করি এবং ব্যবহার করি।
extension UIImageView { func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) { URLSession.shared.dataTask(with: url, completionHandler: completion).resume() } func downloadImage(from url: URL) { getData(from: url) { data, response, error in guard let data = data, error == nil else { return } DispatchQueue.main.async() { self.image = UIImage(data: data) } } } }
এখন, আমাদের ভিউডিডলোডে (বা আপনার পছন্দের অন্য কোন জায়গায়) নিম্নলিখিত কোড যোগ করুন।
override func viewDidLoad() { super.viewDidLoad() let url = URL(string: "https://static.independent.co.uk/s3fs-public/thumbnails/image/2017/09/12/11/naturo-monkey-selfie.jpg?w968h681") self.imgView.downloadImage(from: url!) }
যখন আমরা আমাদের ডিভাইসে এই কোডটি চালাই, তখন আমরা নিম্নলিখিত ফলাফল পাই৷
৷