您需要使用的图像掩码。您可以通过绘制渐变成位图背景使面膜:(如果你不使用ARC删除__bridge
)
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef gc = CGBitmapContextCreate(NULL, rect.size.width, rect.size.height, 8, rect.size.width, colorSpace, kCGImageAlphaNone);
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)[NSArray arrayWithObjects:(__bridge id)[UIColor whiteColor].CGColor, (__bridge id)[UIColor blackColor].CGColor, nil], NULL);
CGColorSpaceRelease(colorSpace);
CGContextDrawLinearGradient(gc, gradient, CGPointMake(0, 0), CGPointMake(0, rect.size.height), 0);
CGGradientRelease(gradient);
CGImageRef mask = CGBitmapContextCreateImage(gc);
CGContextRelease(gc);
然后你可以用面膜绘制图像之前:
CGContextTranslateCTM(context, 0, rect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextClipToMask(context, rect, mask);
完成后请不要忘记放开面罩。
我不明白我怎么能应用你说的我的上下文或CGLayerRef? – user789148
我以为你在使用CALayer。我改变了我的答案。 –
WHOUAAAAAAAAAAAAAAAAA正是我在找的:) :) :)非常感谢:)作品完美无缺:) – user789148