我正在尝试在两个ViewControllers之间进行转换。我的Transition类具有目标视图控制器的属性。当我尝试获取目的地视图的屏幕截图时,我使用此方法:
+ (UIImage *)renderImageFromView:(UIView *)view withRect:(CGRect)frame {
// Create a new context the size of the frame
UIGraphicsBeginImageContextWithOptions(frame.size, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
// Render the view
[view.layer renderInContext:context];
// Get the image from the context
UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext();
// Cleanup the context you created
UIGraphicsEndImageContext();
return renderedImage;
}
所以当我想要图像时,我会这样做:
UIImage *image = [UIImage renderImageFromView:destinationController.view withRect:destinationController.view.bounds];
我在一个带有橙色背景颜色和标签的空白UIViewController上尝试过它。我得到橙色背景颜色,但我没有得到在IB中创建的标签。有没有办法获得我计划展示的新视图的正确屏幕截图?谢谢!
答案 0 :(得分:1)
您需要确保首先绘制视图的图层。在CALayer
上调用renderInContext只会递归调用其他子CALayer
。您需要您的孩子UIView
自己画画,而不仅仅是使用CALayer
。
尝试拨打
[view drawrect:frame];
而不是
[view.layer renderInContext:context];
只要你有一个开放的图形上下文(你在那时做),drawrect
应该直接绘制到它。