在我的應用程序中,我有一個根層和許多圖像,它們是rootLayer的子圖層。我想將rootLayer的所有子層平鋪到一個圖層/圖像中,沒有任何子圖層。我想我應該通過繪製核心圖形環境中的所有子圖層來做到這一點,但我不知道該怎麼做。將CALayer子圖層平鋪到一個圖層中
我希望你能理解我,併爲我的英語感到抱歉。
在我的應用程序中,我有一個根層和許多圖像,它們是rootLayer的子圖層。我想將rootLayer的所有子層平鋪到一個圖層/圖像中,沒有任何子圖層。我想我應該通過繪製核心圖形環境中的所有子圖層來做到這一點,但我不知道該怎麼做。將CALayer子圖層平鋪到一個圖層中
我希望你能理解我,併爲我的英語感到抱歉。
從你自己的例子爲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或掩碼值的圖層。
您是否仍然希望該圖層具有交互性?如果沒有,請撥打-renderInContext:
並顯示位圖上下文。
正如我所說我不知道如何做到這一點。 我寫道:http://en.pastebin.ca/1744529 但它不起作用。 – radex
謝謝!雖然這是過濾器的恥辱,並且不支持3d變換。 – radex
不適用於子層,如果它們被轉換! – gwdp
不起作用;返回的圖像是空白的(全白)。 –