2015-01-16 15 views
13

मैं अपने ऐप के एक स्क्रीनशॉट लेने के लिए इस स्विफ्ट कोड का उपयोग कर रहा:स्क्रीनशॉट केवल स्क्रीन का हिस्सा है - स्विफ्ट

UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, 0); 
self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) 
var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

मैं स्क्रीन का ही हिस्सा का एक स्क्रीनशॉट लेने के बारे में कैसे जाना होगा, और सभी नहीं इसके बारे में, जैसा कि मैं यहाँ करता हूँ?

उत्तर

26

उदाहरण के लिए यदि आप (100,150) की ऊंचाई के साथ (50,50) पर UIView आयत का स्क्रीन शॉट लेना चाहते हैं।

पहले आयत के आकार में छवि संदर्भ सेट करें। यह छवि आकार सेट करता है।

UIGraphicsBeginImageContextWithOptions(CGSizeMake(100,150), false, 0); 

अब इस तरह से कि, स्क्रीनशॉट दृश्य भाग (50,50)

self.view.drawViewHierarchyInRect(CGRectMake(-50,-50,view.bounds.size.width,view.bounds.size.height) afterScreenUpdates: true) 

इस क्लिप स्क्रीन (100,150) पर शॉट पर शुरू होता है क्योंकि हम आकार सेट में इस संदर्भ में देखने आकर्षित हमारे context का। अब से UIImage ले लो।

var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); 
+0

तेज़ उत्तर के लिए धन्यवाद! – tdh

+0

मामा नुवु केका मामा;) – chandu

+0

मेरे लिए काम नहीं कर रहा है। क्या आप मेरे कोड को देखने पर ध्यान देंगे? http://stackoverflow.com/questions/34887164/how-to-screenshot-just-part-of-a-screen – bkwebhero

0

मुझे लगता है कि यह सबसे अच्छा जवाब स्क्रीन के भाग के एक शॉट लेने के लिए है:

func screenShot() { 
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.frame.size.width*0.99,self.frame.size.height*0.70), false, 0) 
    var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); 
    self.view?.drawViewHierarchyInRect(CGRectMake(-01, -01, self.frame.size.width, self.frame.size.height), afterScreenUpdates: true) 
    var screenShot = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
} 
संबंधित मुद्दे