我需要將UIView及其所有子視圖捕獲到UIImage中。問題是部分視圖不在屏幕上,所以我不能使用屏幕捕獲功能,並且當我嘗試使用UIGraphicsGetImageFromCurrentImageContext()函數時,它似乎也不捕獲子視圖。它應該捕獲子視圖,我只是做錯了什麼?如果沒有,有沒有其他的方式來完成這個?需要將UIView捕獲到UIImage中,包括所有子視圖
14
A
回答
2
你的意思
UIGraphicsBeginImageContext(view.bounds.size);
[view.layer drawInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
不起作用?我敢肯定它應該...
27
這是正確的方式去:
+ (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, [[UIScreen mainScreen] scale]);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
這個方法是的UIImage類的擴展方法,它也將採取使圖像看起來的護理擅長任何未來的高分辨率設備。
+2
真的有效! – AlexeyVMP 2013-02-18 15:19:15
+0
保存我的時間:) 謝謝 – 2013-07-06 14:18:53
0
這裏有一個雨燕2.x的版本,如果你首先創建UIViews的數組應該努力得到扁平:
// Flattens <allViews> into single UIImage
func flattenViews(allViews: [UIView]) -> UIImage? {
// Return nil if <allViews> empty
if (allViews.isEmpty) {
return nil
}
// If here, compose image out of views in <allViews>
// Create graphics context
UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, UIScreen.mainScreen().scale)
let context = UIGraphicsGetCurrentContext()
CGContextSetInterpolationQuality(context, CGInterpolationQuality.High)
// Draw each view into context
for curView in allViews {
curView.drawViewHierarchyInRect(curView.frame, afterScreenUpdates: false)
}
// Extract image & end context
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
// Return image
return image
}
相關問題
- 1. 列表中包括所有需要的信息,包括地圖
- 2. 作爲UIImage捕獲UIView
- 3. 添加UIView以上所有其他視圖,包括狀態欄
- 4. 將子視圖添加到選擇器中的主要uiview中
- 5. 捕獲非活動UIView作爲UIImage
- 6. 滾動時將UIScrollView捕獲到UIImage中
- 7. 包括項目中所需的罐子
- 8. 如何將UIView作爲UIImage在特定幀中捕獲?
- 9. 如何將uiview作爲子視圖添加到現有視圖
- 10. [增訂]需要/包括php和穿過值到另一所需的/ PHP包括
- 11. AutoLayout:如何將UIView限制爲不超過包含所有子視圖所需的高度?
- 12. 從php exec中捕獲/禁止所有輸出,包括stderr
- 13. 基於在UIview中移動的觸摸對UIImage視圖進行平移和縮放(UIImage視圖的子視圖)
- 14. UIView子視圖沒有收到觸動
- 15. 禁用所有其他視圖不包括地圖視圖Gmap2
- 16. UIView沒有sizeToFit子視圖
- 17. 包括或需要
- 18. 如何捕獲UIView的內容並將其更改爲UIImage?
- 19. 如何獲得包括視圖列的MS SQL的所有列
- 20. 將子視圖的子類添加到UIView的子類中
- 21. PHP包括/需要在文件中的所有功能裏面
- 22. 可能將所有需要的文件打包到EXE中?
- 23. 從子視圖引用包含UIView?
- 24. 父UIView不包含/裁剪子視圖
- 25. 作爲包含uitableview的子視圖Uiview
- 26. 將子視圖傳遞給子類UIView
- 27. 如何將UIImage「繪製」到視圖中?
- 28. Rails的捕獲所有路線,不包括資源和HTML
- 29. 捕獲所有`了`點擊包括那些添加dynamcally
- 30. 將UIView變成UIImage
我猜想,因爲每一個'UIView'是基於層的調用' - [CALayer的drawInContext:viewContext]'可能會有所幫助。 – 2010-06-28 00:47:33