2012-03-08 7 views
1

内のマスクをキャプチャすることはできません:は、だから私は、次のコードでUIViewの層に画像マスクを適用していビュー層

CALayer *maskLayer = [CALayer layer]; 
UIImage *maskImage = self.image.image; 
maskLayer.contents = (id)maskImage.CGImage; 
maskLayer.frame = CGRectMake(0.0, 0.0,1235, 935); 
self.bgView.layer.mask = maskLayer; 

すべては罰金とダンディで、マスクは、ビューの内容や作品をカバーしています。しかし、私はユーザーに画像を保存させるためにスクリーンショットを撮ろうとしています。私は次のコードを使用しています:

UIGraphicsBeginImageContext(captureFrame.size); 
[self.bgView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil); 

フレームは問題なく、フォトライブラリに保存されます。唯一の問題は、レイヤーに適用されたマスクがJPGに表示されないことです。私はまた、別のUIViewに私のbgViewを入れ子にしようとしてからrenderInContext:しようとしているが、その同じこと。最後のJPGでマスクが適用されていないかのように見えます。

アイデア?ありがとうございました。

答えて

3

これは残念ですが、それがうまくいく方法です。 documentation for -[CALayer renderInContext:]は言う:

... backgroundFilters、フィルタ、compositingFilter、またはマスク値を指定するレイヤーをレンダリングされない3Dトランスフォームを使用し、またある層。

CoreAnimationは、オンスクリーンのアニメーション描画を目的としています。汎用グラフィックスフレームワークではありません。代わりにCoreGraphicsを使用してみてください - それほど難しくはありませんが、より多くのコントロールがあり、より高品質の出力が得られます。

関連する問題