2012-11-05 12 views
7

मैं UIView का स्क्रीनशॉट लेकर एक पीडीएफ बना रहा हूं, यह वर्तमान में रेटिना डिस्प्ले के साथ आईपैड 3 पर बहुत अच्छा काम कर रहा है, लेकिन जब मैं कम रिज़ॉल्यूशन स्क्रीन वाले अन्य उपकरणों पर परीक्षण कर रहा हूं पाठ संकल्प के साथ समस्याएं।renderInContext

यहाँ मेरी कोड है:

//start a new page with default size and info 
    //this can be changed later to include extra info. 
    UIGraphicsBeginPDFPage(); 

    //render the view's layer into an image context 
    //the last option specifies scale. If 0, it uses the devices scale. 
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 2.0); 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [view.layer renderInContext:context]; 
    UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    //render the screenshot into the pdf page CGContext 
    [screenShot drawInRect:view.bounds]; 

    //close the pdf context (saves the pdf to the NSData object) 
    UIGraphicsEndPDFContext(); 

मैं भी 2.0 के लिए UIGraphicsBeginImageContextWithOptions पैमाने पर सेट करने की कोशिश की है, लेकिन यह कोई परिवर्तन नहीं देता है। मैं 2x रिज़ॉल्यूशन पर प्रस्तुत करने के लिए आईपैड 2 पर एक दृश्य को कैसे मजबूर कर सकता हूं?

अपेक्षित उत्पादन:

Imgur

वास्तविक उत्पादन:

Imgur

+2

आपको क्या समस्याएं हैं? 'UIGraphicsBeginImageContextWithOptions' से 2 में स्केल सेट करना इसे 2x रिज़ॉल्यूशन पर प्रस्तुत करने के लिए मजबूर होना चाहिए। सही और गलत आउटपुट दिखाने वाली छवियां पोस्ट करें। –

+0

मेरा प्रश्न अपडेट किया गया – danielbeard

+0

क्या पीडीएफ के उन स्क्रीनशॉट हैं? दो छवियां अलग-अलग आकार हैं, लेकिन दूसरे के आयामों में से दो बार नहीं है। न ही ऐसा लगता है कि इसे दूसरे के संकल्प में दो बार प्रस्तुत किया गया था। प्रत्येक वास्तविक 'UIImage' को फ़ाइल में सहेजने का प्रयास करें, उदा। '[UIImagePNGRresentresent (स्क्रीनशॉट) लिखने के लिए फ़ाइल: @"/tmp/image.png "परमाणु रूप से: नहीं]'। इसे सिम्युलेटर पर करें और प्रत्येक रन के बाद छवि को '/ tmp' से कॉपी करें। –

उत्तर

5

मैं रिकर्सिवली जनक दृश्य और 2.0 के लिए अपने subviews के contentScaleFactor संपत्ति सेट करके ऐसा फिक्सिंग समाप्त हो गया।

यूआईएममेज सही रिज़ॉल्यूशन पर प्रतिपादन कर रहा था, लेकिन परत तब नहीं थी जब renderInContext कहा जा रहा था।

संबंधित मुद्दे