प्रोग्रामेटिकली स्क्रीनशॉट लेना
हालांकि iOS प्रोग्रामेटिकली स्क्रीनशॉट लेने का कोई आधिकारिक तरीका प्रदान नहीं करता, लेकिन यह होम और पावर बटन को एक साथ दबाकर स्क्रीनशॉट लेने का तरीका प्रदान करता है।
स्क्रीनशॉट लेने के लिए हमें चरणों की एक श्रृंखला से गुजरना होगा:
- keyWindow की लेयर प्राप्त करें - UIApplication.shared.keyWindow!.layer
- स्क्रीन का स्केल प्राप्त करें - UIScreen.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 फॉर्मेट में होगी।
अपने ऐप के info.plist में "NSPhotoLibraryAddUsageDescription" भी जोड़ें।
इसे फंक्शन में बदलकर कई जगहों पर उपयोग किया जा सकता है, या एक्सटेंशन के रूप में।
परिणाम
जब आप इसे चलाते हैं तो ऐप इस तरह दिखता है:

पहली बार चलाने और टेक शॉट बटन पर क्लिक करने के बाद:

एक्सेस अनुमति देने के बाद, अपने iPhone पर फोटोज ऐप में जाएं और तस्वीर वहां मिल जाएगी।
