2012-11-05 36 views
7

Tôi đang tạo tệp PDF bằng cách chụp ảnh màn hình UIView, điều này hiện đang hoạt động tốt trên iPad3 với màn hình hiển thị võng mạc, nhưng khi thử nghiệm trên các thiết bị khác có màn hình có độ phân giải thấp hơn vấn đề với độ phân giải văn bản.renderInContext trên thiết bị võng mạc và không phải võng mạc

Đây là mã của tôi:

//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(); 

Tôi cũng đã cố gắng thiết lập các quy mô UIGraphicsBeginImageContextWithOptions-2,0, nhưng điều này không đưa ra sự thay đổi. Làm thế nào tôi có thể buộc một cái nhìn trên một iPad2 để render ở độ phân giải 2x?

sản lượng dự kiến:

Imgur

đầu ra thực tế:

Imgur

+2

Bạn đang gặp phải sự cố gì? Đặt tỷ lệ trong 'UIGraphicsBeginImageContextWithOptions' thành 2 sẽ buộc nó hiển thị ở độ phân giải 2x. Đăng hình ảnh hiển thị kết quả đầu ra chính xác và không chính xác. –

+0

Đã cập nhật câu hỏi của tôi – danielbeard

+0

Các ảnh chụp màn hình đó của PDF phải không? Hai hình ảnh có kích thước khác nhau, nhưng không phải là kích thước của hai kích thước khác. Cũng không giống như nó đã được trả lại gấp đôi độ phân giải của người kia. Thử lưu từng 'UIImage' thực tế vào một tệp, ví dụ: '[UIImagePNGRepresentation (screenShot) writeToFile: @"/tmp/image.png "nguyên tử: NO]'. Làm điều đó trên giả lập và sao chép hình ảnh ra khỏi '/ tmp' sau mỗi lần chạy. –

Trả lời

5

tôi đã kết thúc sửa chữa điều này bằng cách thiết lập một cách đệ quy contentScaleFactor tài sản của quan điểm phụ huynh và subviews của nó đến 2,0.

UIImage được hiển thị ở độ phân giải chính xác, nhưng lớp không phải là khi renderInContext đang được gọi.

Các vấn đề liên quan