1

透明な領域が重なっているPNGのUIImageViewsであるオブジェクトがいくつかあります。透明な部分が重なっている場所で、いくつかの画像を互いに近くに積み重ねます。そのうちの1つに触れると、オーディオを再生します。

タッチを透明な領域に通し、適切なオブジェクトを認識させるために、次の方法でタッチを透明なレイヤーに通します。

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
    unsigned char pixel[1] = {0};
    CGContextRef context = CGBitmapContextCreate(pixel, 
                                                 1, 1, 8, 1, NULL,
                                                 kCGImageAlphaOnly);
    UIGraphicsPushContext(context);
    [self.image drawAtPoint:CGPointMake(-point.x, -point.y)];
    UIGraphicsPopContext();
    CGContextRelease(context);
    CGFloat alpha = pixel[0]/255.0;
    BOOL transparent = alpha < 0.01;
    if(transparent){
        return NO;
    } else {
        return YES;
    }

}

問題:画面に3つか4つが積み重なると、タッチに顕著な遅延が発生し始めます。つまり。最上層はすぐにトリガーされますが、最下層には数ミリ秒かかります。

PNGの透明な領域にタッチを渡すより速い方法はありますか?

ありがとう

4

0 に答える 0