我有以下图纸,它在中心呈现一个全彩色圆圈,边缘处为0 alpha。将其绘制到屏幕上时,它看起来很完美。但是,当我在PDF上下文(CGPDFContextCreate)中绘制相同的内容时,整个圆圈都是不透明的。如果我在PDF中绘制任何其他常规路径,则alpha会呈现罚款。所以只是渐变不起作用。这是一个错误还是我错过了什么?
CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB();
size_t num_locations = 2;
CGFloat locations[2] = { 1.0, 0.0 };
CGColorRef color = [[UIColor redColor]CGColor];
CGFloat *k = (CGFloat *)CGColorGetComponents(color);
CGFloat components[8] = { k[0], k[1], k[2], 0.0, k[0], k[1], k[2], 1.0 };
CGGradientRef myGradient = CGGradientCreateWithColorComponents(myColorspace, components, locations, num_locations);
CGPoint c = CGPointMake(160, 160);
CGContextDrawRadialGradient(pdfContext, myGradient, c, 0, c, 60, 0);
答案 0 :(得分:3)
Apple技术支持的官方回应:
Quartz忽略渐变(或阴影)中颜色的alpha值 捕获渐变(或阴影)到PDF文档时 将所有颜色视为完全不透明。此外, Quartz在记录时忽略了上下文中的全局alpha 渐变(或阴影)到PDF文档中。一种可能的解决方法 是使用位图上下文捕获阴影作为位并使用 结果位创建一个通过剪辑绘制的CGImage 区域。这会产生预渲染的渐变(或阴影),但确实如此 将alpha内容捕获到PDF文档中。你不应该表演 这个预渲染的渐变(或阴影)不包含 阿尔法。