iOS - Как прикоснуться к изображению на прозрачной части изображения?
Здесь я хочу получить прикосновение к событию действия кнопки при нажатии кнопки - B
и когда изображение касается (в видимой области изображения), метод жеста касания вызовет
но проблема в том, что изображение находится на кнопке и покрывает некоторую часть кнопки. Я хочу выполнить событие действия кнопки на этой покрытой части - A
Я пытался, но не смог получить действие кнопки на закрытой части:(
Кто-нибудь может мне помочь в этом?
4 ответа
Поместите прозрачную кнопку над этой частью
Обновить
-(void)singleTapImageview:(UITapGestureRecognizer *)gesture
{
NSLog(@"single-tap");
CGPoint touchLocation = [gesture locationInView:self.imageViewParent];
float x = touchLocation.x;
float y = touchLocation.y;
//Using gesture recogniser you can get the current position of touch
UIImage* image = imageViewParent.image;
CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
UInt8 *pixels = (UInt8 *)CFDataGetBytePtr(data);
UIGraphicsBeginImageContext(image.size);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 1);
CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [UIColor redColor].CGColor);
int index = ((x + (y * (int)image.size.width)) * 4) + 3;
CGFloat alpha = pixels[index];
if (alpha == 0)
{
// call button acton
}
}
Вы можете добавить новую прозрачную кнопку, которая будет перекрывать вашу часть изображения и существующую кнопку, имеющую рамку
CGRectMake(button.frame.origin.x, button.frame.origin.y, button.frame.size.width, button.frame.size.height);
Просто не перекрывайте кнопку с изображением таким образом. Это выглядит ужасно.
Для более долгосрочного решения я рекомендую подружиться с UX дизайнером и графическим художником. Если вам повезет, это может быть даже тот же человек.
Вы можете решить эту проблему, написав хит-функцию для перекрывающейся кнопки.
В хит-тесте вы должны решить, какая кнопка была нажата, проверяя координаты.
http://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/uiview/uiview.html: