2014-05-08 46 views
3

我想渲染一個包含多個CAShapeLayers的ptransformLayer到png文件。我知道如何設置基本渲染,並確實有效。將CATransformLayer渲染爲3D中的PNG

儘管當我在CATransformLayer上調用renderInContext時,它將所有東西都平整爲2D,並完全忽略了我的轉換矩陣(旋轉和/或透視圖)。

我能做些什麼來渲染我的3d CATransformLayer及其所有CAShapeLayer到PNG/UIImage?

+1

根據文檔renderInContext:不渲染3D轉換。問題:你只針對iOS 7及以上版本嗎? – TylerTheCompiler

+0

嗯,我明白了。是的,我願意。有沒有在iOS 7中做到這一點的簡潔方法? – Max

回答

6

既然你只針對iOS7及以上,我建議你溝renderInContext:並用-[UIView drawViewHierarchyInRect:afterScreenUpdates:]代替它。您的代碼可能看起來像這樣:

UIGraphicsBeginImageContext(sizeOfYourImage); 

[yourViewToRender drawViewHierarchyInRect:(CGRect){0, 0, sizeOfYourImage} afterScreenUpdates:YES]; 

UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 
+0

謝謝!使我的一天:) 雖然知道一種方法來渲染它,而不必先在屏幕上顯示它會很酷。 – Max

+0

@Max嗯,在使用這種技術之前,您不必先在屏幕上顯示視圖。實際上,我現在只是做了一個測試項目,它可以呈現一個視圖層次結構,而不是作爲子視圖添加到任何其他視圖中,而且工作得很好。 – TylerTheCompiler

+0

啊,好吧,太棒了!這意味着我也可以渲染大於屏幕的圖像,這很好。 您是否知道這個或其他技術是否適用於使用3D變換(適用於矢量圖形導出,渲染CAShapeLayers的3D層次結構爲PDF)的PDF? – Max