如何强制UIImageView及其子视图在新上下文中重绘?

时间:2010-02-27 15:09:39

标签: iphone graphics uiimageview

kSBCanvas是一个SBCanvas,它是UIImageView的子类。它有一些UIImageView子视图。这一切都让iPhone屏幕变得很棒。

我需要将kSBCanvas及其子视图合成到我想写入磁盘的imageview。

我执行以下操作:

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

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

然后获取PNG表示并将其写入磁盘。

kSBCanvas呈现,但不是子视图图像。我查了一下,kBCanvas有子视图。我是否必须明确地在子视图上调用drawRect?很容易,但似乎不对。

1 个答案:

答案 0 :(得分:1)

请改为尝试:

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

渲染图层也应该渲染所有子视图。