CALayer renderInContext iOS7

时间:2013-09-26 09:45:01

标签: ios6 ios7 calayer uigraphicscontext

我正在渲染多个图层以获得最终图像。其中一个图像包含一个面,另一个包含一个背景,在面部周围有透明渐变,以便隐藏真实背景。在iOS6中,它可以很好地工作,但它在iOS7中使用透明渐变创建了一种奇怪的效果。

代码:

CGRect rect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(rect.size);

CGContextRef context = UIGraphicsGetCurrentContext();

[faceImageView.layer renderInContext:context];
[fakeBackgroundImageView.layer renderInContext:context];

UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

iOS6和iOS7中的结果:

ios6

ios7

1 个答案:

答案 0 :(得分:6)

好的,解决方案正在改变这一行:

UIGraphicsBeginImageContext(rect.size);

这个:

UIGraphicsBeginImageContextWithOptions(rect.size, TRUE, [[UIScreen mainScreen] scale]);

现在它也适用于iOS7