2010-02-27 56 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