2010-02-27 33 views
2

kSBCanvas是一個SBCanvas,它是UIImageView的子類。它有幾個UIImageView子視圖。這一切都對iPhone屏幕非常好。如何強制UIImageView及其子視圖在新的上下文中重繪?

我需要將kSBCanvas及其子視圖複合到我要寫入磁盤的imageview。

我做到以下幾點:

UIGraphicsBeginImageContext(kSBCanvas.bounds.size); 
[kSBCanvas drawRect: [kSBCanvas bounds]]; 

UIImage *theImage=UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

然後得到一個PNG表示,並將其寫入到磁盤。

kSBCanvas呈現,但不是子視圖圖像。我檢查了,kBCanvas有子視圖。我必須明確地在子視圖上調用drawRect嗎?很簡單,但它看起來不正確。

回答

1

試試這個:

UIGraphicsBeginImageContext(kSBCanvas.bounds.size); 
{ 
    [kSBCanvas.layer renderInContext: UIGraphicsGetCurrentContext()]; 
    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); 
} 
UIGraphicsEndImageContext(); 

渲染層也應使所有的子視圖。

+0

似乎是對的,但編譯器顯示「no」renderInContext:'method found?kSBCanvas絕對是一個對象,它是UIImageView的子類,我知道這很簡單,怎麼回事?如上圖所示,沒有什麼大不了的, – purplehey 2010-02-27 18:45:01

+0

你需要'#include ' – 2010-02-27 19:02:06

+0

剛剛刪除了括號,這是我自己奇怪的風格 – 2010-02-27 19:03:26

相關問題