2010-04-05 46 views
2

我聽說可以使用黑色/白色圖像遮蓋視圖,其中黑色表示完全透明,白色表示視圖可見。 clipToBounds最大的不同之處在於該視圖可以用像圈子或星星這樣的有趣形狀來剪輯。我怎麼能這樣做?如何用黑白圖像遮罩視圖?

回答

4
CGImageRef maskRef = <some cgimage>; 
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), CGImageGetHeight(maskRef), CGImageGetBitsPerComponent(maskRef), CGImageGetBitsPerPixel(maskRef), CGImageGetBytesPerRow(maskRef), CGImageGetDataProvider(maskRef), NULL, YES); 
CGContextClipToMask(context, maskRect, mask); 
CGImageRelease(mask); 
4

預覽功能

void CGContextClipToMask (
    CGContextRef c, 
    CGRect rect, 
    CGImageRef mask 
); 

如果我理解正確的它正是你想要的。

1
CGImageRef maskImage = <Black-White Image> 
const CGFloat components[6] = {0,0,0,0,0,0}; // mask black color 
CGImageRef mask = CGImageCreateWithMaskingColors(maskImage, components); 
CGContextClipToMask(ctx, mask) 
// draw images will be masked