2012-03-08 72 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中。我也嘗試將我的bgView嵌套到另一個UIView中,然後嘗試renderInContext:,但它是同樣的事情。它看起來好像在最後的JPG中沒有應用蒙版。

任何想法?謝謝。

回答

3

這很不幸,但這就是它的工作原理。該documentation for -[CALayer renderInContext:]說:

...使用3D變換不能渲染,也不是指定backgroundFilters,過濾器,compositingFilter或屏蔽值層層。

CoreAnimation適用於屏幕上,動畫;它不是一個通用的圖形框架。嘗試使用CoreGraphics--這並不困難,您將擁有更多控制權,並且您將獲得更高質量的輸出。