J'utilise UIButton
avec la layout automatique. Lorsque les images sont petites, la zone de frappe est également petite. Je pourrais imaginer plusieurs approches pour résoudre ce problème:
À côté des deux approches ci-dessus, y a-t-il une meilleure solution pour augmenter la surface de prise d'un UIButton?
Vous pouvez simplement ajuster l'encart de contenu du button pour get la taille désirée. Dans le code, cela ressemblera à ceci:
button.contentEdgeInsets = UIEdgeInsets (en haut: 12, à gauche: 16, en bas: 12, à droite: 16)
// ou si vous souhaitez spécifiquement ajuster autour de l'image, utilisez plutôt button.imageEdgeInsets
Dans le constructor de l'interface, cela ressemblera à ceci:
Vous pouvez définir le button EdgeInsets dans le storyboard ou via le code. La taille du button doit être plus grande en hauteur et en largeur que l'image définie sur le button.
Ou vous pouvez également utiliser l'affichage de l'image avec le geste du robinet pour l'action tout en enregistrant sur l'image. Assurez-vous de cocher l'option Interaction user activée pour l'imageview sur le storyboard pour que le geste fonctionne. Faites en sorte que l'image soit plus grande que l'image et définissez-la sur l'image. Maintenant, définissez le mode de l'image de vue de l'image à centrer sur le storyboard / interface constructor.
Vous pouvez appuyer sur l'image pour faire l'action.
J'espère que cela sera utile.
Je ne suis pas sûr, mais il devrait y avoir un moyen de spécifier la taille minimum pour n'importe quel UIView, qui pourrait résoudre votre problème sans travail supplémentaire. Mais honnêtement, l'ajout d'un fond transparent supplémentaire autour de l'image est la meilleure solution.
Vous pouvez append un file de catégorie UIButton (extention)
à votre projet, ce qui peut vous aider à créer une zone de frappe plus grande que la zone par défaut.
Très facile. Créez une class UIButton personnalisée. Remplacez ensuite la méthode pointInside … et modifiez la valeur comme vous le souhaitez.
#import "CustomButton.h" @implementation CustomButton -(BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event { CGRect newArea = CGRectMake(self.bounds.origin.x - 10, self.bounds.origin.y - 10, self.bounds.size.width + 20, self.bounds.size.height + 20); return CGRectContainsPoint(newArea, point); } @end
Il faudra plus de 10 points zone tactile pour tous les côtés.