हालांकि आईओएस, आईओएस डिवाइस पर प्रोग्रामेटिक रूप से स्क्रीनशॉट लेने का कोई आधिकारिक तरीका प्रदान नहीं करता है, यह एक ही समय में दोनों को दबाकर, होम और पावर बटन का उपयोग करके स्क्रीनशॉट लेने का एक तरीका प्रदान करता है।
स्क्रीनशॉट लेने के लिए, हमें कई चरणों से गुज़रना होगा।
-
हमें keyWindow की परत मिलेगी - UIApplication.shared.keyWindow!.layer
-
हमें स्क्रीन का पैमाना मिलेगा - UIApplication.main.scale
-
दृश्य के समान आकार के साथ एक नई छवि बनाना।
-
इमेज को रेंडर और सेव करें।
आइए एक नया प्रोजेक्ट बनाएं, मुख्य दृश्य नियंत्रक में कुछ पृष्ठभूमि रंग दें और फिर एक बटन खींचें और अपनी कक्षा में एक क्रिया बनाने के लिए कनेक्ट करें। कार्रवाई में निम्नलिखित कोड जोड़ें।
@IBAction func takeshot(_ sender: Any) { var image :UIImage? let currentLayer = UIApplication.shared.keyWindow!.layer let currentScale = UIScreen.main.scale UIGraphicsBeginImageContextWithOptions(currentLayer.frame.size, false, currentScale); guard let currentContext = UIGraphicsGetCurrentContext() else {return} currentLayer.render(in: currentContext) image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() guard let img = image else { return } UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil) }
पहली बार इसका उपयोग करते समय आपको फोटो को इमेज सेव करने की अनुमति देनी होगी। सहेजी गई छवि .jpg प्रारूप में होगी।
एक “NSPhotoLibraryAddUsageDescription” . भी जोड़ें आपके ऐप की info.plist पर।
इसे एक फ़ंक्शन में परिवर्तित किया जा सकता है और कई स्थानों पर या एक एक्सटेंशन के रूप में उपयोग किया जा सकता है।
इस तरह ऐप दिखता है। जब आप इसे चलाते हैं।
पहली बार दौड़ने और टेक शॉट बटन पर क्लिक करने के बाद
आपके द्वारा एक्सेस की अनुमति देने के बाद, अपने iPhone पर फोटो ऐप पर जाएं और तस्वीर वहां मिल जाएगी।