2012-11-05 170 views
7

我通過拍攝UIView的屏幕截圖來創建一個PDF,目前這款軟件在iPad3上的視網膜顯示效果很好,但是當在具有較低分辨率屏幕的其他設備上測試時,文本解析問題。在視網膜和非視網膜設備上的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(); 

我也試圖給UIGraphicsBeginImageContextWithOptions比例設置爲2.0,但是這給沒有變化。如何強制iPad2上的視圖以2倍分辨率呈現?

預期輸出:

Imgur

實際輸出:

Imgur

+2

你有什麼問題?將'UIGraphicsBeginImageContextWithOptions'中的比例設置爲2應該強制它以2x分辨率呈現。顯示正確和錯誤輸出的圖像。 –

+0

更新我的問題 – danielbeard

+0

是PDF的截圖嗎?這兩幅圖像大小不同,但其中一幅不是另一幅的兩倍。人們看起來也不像其他人的解決方案的兩倍。嘗試將每個實際的'UIImage'保存到文件中,例如'[UIImagePNGRepresentation(screenShot)writeToFile:@「/ tmp/image.png」原子:NO]'。在模擬器上執行並在每次運行後將映像從'/ tmp'中複製出來。 –

回答

5

我結束了通過遞歸地設置父視圖和它的子視圖〜2.0的contentScaleFactor屬性固定這一點。

UIImage正在以正確的分辨率進行渲染,但是當調用renderInContext時,圖層不是。

相關問題