2009-05-13 35 views
10

Tôi đang sử dụng UIWebView để hiển thị văn bản được định dạng HTML. Tôi không tải trang web, chỉ cần cung cấp một chuỗi HTML cho UIWebView.Chuyển nội dung UIWebview thành UIImage

Bây giờ tôi muốn tạo hiệu ứng cho UIWebView này trên màn hình, thực tế là một vài trong số chúng (2-10 tại một thời điểm). UIWebView hơi nặng và mặc dù tôi chưa thử, tôi đang lên kế hoạch cho điều tồi tệ nhất. (Tôi không nghĩ rằng đây là tối ưu hóa sớm, tôi gần như tích cực điều này sẽ là một vấn đề)

Để giải quyết vấn đề, tôi đã tìm ra tôi có thể chuyển đổi nội dung của UIWebViews thành UIImages và thay thế chúng.

Vì vậy, câu hỏi của tôi là:

  1. Làm thế nào để bạn chuyển đổi UIWebView nội dung vào một UIImage (hoặc CGImageRef)?
  2. UIWebView của tôi có các mặt đất trong suốt, sẽ có độ trong suốt được chuyển sang UIImage?

Thanks cho bất kỳ lời đề nghị

Trả lời

21
UIGraphicsBeginImageContext(webview.bounds.size); 
[webview.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Bạn có thể gặp vấn đề nếu kích thước webview là lớn vì webview sử dụng một CATiledLayer mà không rút ra tất cả mọi thứ vì những lý do bộ nhớ.

Hình ảnh sẽ bao gồm tính minh bạch

+0

Thanks.My webviews chỉ là một dòng văn bản đơn giản, vì vậy tôi không nghĩ đó sẽ là vấn đề. Tôi đoán kích thước của hình ảnh là kích thước của webview trên màn hình? –

+0

Bạn có thể cần phải gọi sizeToFit: sau khi tải trang web, để có được webview kích thước chính xác của nội dung –

+0

chỉ vì tò mò tại sao bạn muốn hiển thị một dòng văn bản như UIWebView? – Thomas

0

Tôi có thể sai nhưng nếu bạn thiết lập các param bộ nhớ cache của CoreAnimation hệ điều hành sẽ xử lý tối ưu hóa này cho bạn.

ví dụ:

[UIView setAnimationTransition:transition forView:self.view cache:YES]; 
+0

Tôi đang thực hiện hoạt ảnh đường dẫn, vì vậy tôi không thể sử dụng các phương thức tiện lợi của UIView, nhưng chúng có thể là thứ gì đó (có thể là) trong CA hoạt động giống như ... –

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