我試圖使用renderInContext:UIGraphicsGetCurrentContext()
渲染蒙面視圖。我掩蓋了一個白色視圖,它是灰色視圖的子視圖。這對於顯示效果很好:我最終在灰色背景下形成白色形狀,但是當我渲染蒙版時會被忽略,並且我在所得圖像中看到的只是白色。Cocoa Touch:渲染圖像時忽略遮罩:renderInContext:UIGraphicsGetCurrentContext()
面膜在UIView子類
- (void)drawRect:(CGRect)rect
{
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGMutablePathRef patheToMask = CGPathCreateMutable();
CGRect scrollMaskRect = CGRectMake(30, 30, 100, 100);
UIBezierPath *scrollMask = [UIBezierPath bezierPathWithRoundedRect:scrollMaskRect cornerRadius:30];
CGPathAddPath(patheToMask, nil, scrollMask.CGPath);
[maskLayer setPath:patheToMask];
CGPathRelease(patheToMask);
self.layer.mask = maskLayer;
}
渲染代碼
-(void)renderImage {
CGSize renderSize = CGSizeMake(masterView.frame.size.width, masterView.frame.size.height);
UIGraphicsBeginImageContext(renderSize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextConcatCTM(context, [[masterView layer] affineTransform]);
[[masterView layer] renderInContext:UIGraphicsGetCurrentContext()];
renderedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGContextRestoreGState(context);
UIImageWriteToSavedPhotosAlbum(renderedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
masterView.transform = CGAffineTransformIdentity;
}
下面是該項目http://owolf.net/uploads/StackOverflow/MaskWeirdness.zip