在我的应用程序中,我有一个根层,以及许多图像是rootLayer的子图层。我想将rootLayer的所有子图层压缩成一个图层/图像,没有任何子图层。我想我应该通过在核心图形上下文中绘制所有子图层来做到这一点,但我不知道该怎么做。
我希望你能理解我,对不起我的英语。
答案 0 :(得分:9)
从您自己的Mac OS X示例:
CGContextRef myBitmapContext = MyCreateBitmapContext(800,600);
[rootLayer renderInContext:myBitmapContext];
CGImageRef myImage = CGBitmapContextCreateImage(myBitmapContext);
rootLayer.contents = (id) myImage;
rootLayer.sublayers = nil;
CGImageRelease(myImage);
的iOS:
UIGraphicsBeginImageContextWithOptions(rootLayer.bounds.size, NO, 0.0);
[rootLayer renderInContext: UIGraphicsGetCurrentContext()];
UIImage *layerImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
rootLayer.contents = (id) layerImage.CGImage;
rootLayer.sublayers = nil;
另请注意文档中的警告:
Mac OS X v10.5的实现 这种方法不支持 整个核心动画组合 模型。 QCCompositionLayer, CAOpenGLLayer和QTMovieLayer图层 没有呈现。另外,层 使用3D变换的人不是 渲染,也不是指定的图层 backgroundFilters,过滤器, compositingFilter,或掩码值。
答案 1 :(得分:1)
您是否仍希望图层具有交互性?如果没有,请调用-renderInContext:
并显示位图上下文。