Я так опоздал к этой игре, но хотел взвесить простую технику, которая может решить ваши проблемы. Вот типичный программный фрагмент UIButton для меня:
UIImage *arrowImage = [UIImage imageNamed:@"leftarrow"];
arrowButton = [[UIButton alloc] initWithFrame:CGRectMake(15.0, self.frame.size.height-35.0, arrowImage.size.width/2, arrowImage.size.height/2)];
[arrowButton setBackgroundImage:arrowImage forState:UIControlStateNormal];
[arrowButton addTarget:self action:@selector(onTouchUp:) forControlEvents:UIControlEventTouchUpOutside];
[arrowButton addTarget:self action:@selector(onTouchDown:) forControlEvents:UIControlEventTouchDown];
[arrowButton addTarget:self action:@selector(onTap:) forControlEvents:UIControlEventTouchUpInside];
[arrowButton addTarget:self action:@selector(onTouchUp:) forControlEvents:UIControlEventTouchDragExit];
[arrowButton setUserInteractionEnabled:TRUE];
[arrowButton setAdjustsImageWhenHighlighted:NO];
[arrowButton setTag:1];
[self addSubview:arrowButton];
Я загружаю прозрачное изображение PNG для своей кнопки и устанавливаю фоновое изображение. Я устанавливаю кадр на основе UIImage и масштабирую на 50% для сетчатки. Хорошо, может быть, вы согласны с вышеизложенным или нет, НО, если вы хотите сделать область удара БОЛЬШЕ и избавить себя от головной боли:
Что я делаю, откройте изображение в фотошопе и просто увеличьте размер холста до 120% и сохраните. Фактически вы только что увеличили изображение с помощью прозрачных пикселей.
Только один подход.