首页 > 解决方案 > 我们可以只渲染CALayer的一小部分吗?

问题描述

我想检查 CALayer 中某个点的 alpha 值。对于那个渲染,完整的图层对我来说太贵了。有没有一种方法可以围绕问题点只渲染 CAlayer 的一小部分?

代码:

(BOOL) transparentPoint:(CGPoint)point
{
    unsigned char pixel[4] = {0};

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    CGContextRef context = CGBitmapContextCreate(pixel, 1, 1, 8, 4, colorSpace, kCGBitmapAlphaInfoMask & kCGImageAlphaPremultipliedLast);

    CGContextTranslateCTM(context, -point.x, -point.y);

    [self.layer renderInContext:context];

    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);

    CGFloat alpha = pixel[3]/255.0;
    BOOL transparent = alpha < 0.01;
    return transparent;
}

标签: iosobjective-ccore-graphicscalayer

解决方案


推荐阅读