您需要使用的圖像掩碼。您可以通過繪製漸變成位圖背景使面膜:(如果你不使用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