为什么obj2没有与obj1混合但没有使用CGLayer它工作正常,与CGContextDrawLayerAtPoint相同的问题,CGLayer不支持CGContextSetBlendMode吗?
//Layer
CGContextRef context = UIGraphicsGetCurrentContext();
CGLayerRef objectLayer = CGLayerCreateWithContext (context, rect.size, NULL);
CGContextRef objectContext = CGLayerGetContext (objectLayer);
//obj1
CGContextDrawImage(objectContext, CGRectMake(0, 0, rect.size.width, rect.size.height), [[UIImage imageNamed:@"background.png"] CGImage]);
//obj2
CGContextSetBlendMode(objectContext, kCGBlendModeSoftLight);
CGContextSetAlpha(objectContext, 0.5f);
CGContextDrawImage(objectContext, CGRectMake(0, 0, rect.size.width, rect.size.height), [[UIImage imageNamed:@"overlay1.png"] CGImage]);
CGContextDrawLayerInRect(context, rect, objectLayer);
答案 0 :(得分:2)
您只在图层的上下文中设置混合模式,因此图像在柔和的光线混合模式下呈现在透明背景的顶部(我认为它与渲染效果相同)它采用普通混合模式)。
context
的混合模式仍设置为法线,因此将使用该模式渲染图层(已经渲染)。混合模式不跨越上下文边界。