2014-12-30 10 views
7

मैंने कोशिश की कि कभी भी सुझाव दिया गया था लेकिन आउटपुट एक सफेद, खाली स्क्रीनशॉट था। जो मुझे यह मानने के लिए प्रेरित करता है कि मैंने दृश्य में कुछ भी नहीं जोड़ा है। यहां बताया गया है कि मैं अपने दृश्य में ग्राफिक्स कैसे जोड़ रहा हूं। addChild विधि SpriteKit के साथ आता है और यह SKSpriteNodes में लेता है:स्क्रीन शॉट प्रोग्रामेटिक रूप से कैसे लें (स्विफ्ट, स्प्राइटकिट)

UIGraphicsBeginImageContext(self.view!.bounds.size) 
    self.view!.layer.renderInContext(UIGraphicsGetCurrentContext()) 
    let screenshot = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil) 

कोई सुझाव उपयोगी

+0

ऐड चाइल्ड विधि स्प्राइटकिट ढांचे के साथ आता है। मुझे यकीन नहीं है कि यह उन्हें क्या जोड़ रहा है। लेकिन मैं sprites दिखाई देने के लिए इसका उपयोग करें। हालांकि जब मैं स्क्रीनशॉट विधि का उपयोग करता हूं तो यह एक सफेद, खाली स्क्रीनशॉट देता है। – htjohn

+0

आपको कुछ SKNode पर addChild को कॉल करना होगा। आपके द्वारा पोस्ट किए गए कोड के साथ यह स्पष्ट नहीं है कि आप उन्हें क्या देख रहे हैं या नोड (यदि कोई हो) – mc01

+0

मुझे किसके लिए चिह्नित कर रहा है? मैं किस के लिए दो अंक खो दिया? यह हास्यास्पद है और आप लोगों को शर्मिंदा होना चाहिए। – htjohn

उत्तर

10

मुझे लगता है कि इस सवाल का हो सकता है हो सकता है:

addChild(background) 
    addChild(rate) 
    addChild(scoreLabel) 
    addChild(share) 
    addChild(playAgain) 
    addChild(highScoreLabel) 
    addChild(scoreBackground) 
    addChild(highScoreBackground) 

यहाँ विधि है कि स्क्रीनशॉट ले जाता है इस के साथ विलय Screenshotting on Iphone in swift only has a white background

जो

जैसा लगता है

संपादित करें:

मुझे लगता है कि मुझे एक समाधान मिला है। सबसे पहले इस पोस्ट को पढ़ें: How Do I Take a Screen Shot of a UIView?

मैं एक एक्सटेंशन.swift फ़ाइल बनाता हूं जिसमें मैंने उस लिंक का उपयोग करके UIView के तरीकों को 'विस्तारित' किया है।

उसके बाद मैं बस मेरी स्प्राइट किट बटन

let screenshot = self.view?.pb_takeSnapshot() 
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil) 

Voilà के लिए निम्न कनेक्ट, छवि कैमरा रोल में है!

+0

धन्यवाद! मैं आपके उत्तर की सराहना करता हूं। – htjohn

1

यहां बताया गया है कि मैंने इसे स्विफ्ट 3 में कैसे हल किया: यह आपके दृश्य में सभी नोड्स को कैप्चर करता है: नोट: नीचे कोड उस दृश्य को दर्शाता है जो इसे कैप्चर कर रहा है। आप इसे परियोजना में अपने दृश्य के साथ अपडेट करना चाह सकते हैं।

func captureScreen() -> UIImage { 
    UIGraphicsBeginImageContextWithOptions(yourview.bounds.size, true, 0) 

    yourview.drawHierarchy(in: yourview.bounds, afterScreenUpdates: true) 


    let image = UIGraphicsGetImageFromCurrentImageContext()! 
    UIGraphicsEndImageContext() 
    return image 
} 
संबंधित मुद्दे