透明な領域が重なっている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の透明な領域にタッチを渡すより速い方法はありますか?
ありがとう