[Résolu] Changer la forme d'un UIButton
walslayer
Membre
Bonjour, je viens une nouvelle fois vous demander des conseils / informations que je n'ai pas trouvé par moi-même. Je suis toujours sur le développement de mon application permettant d'afficher le stages qui ont été effectués par les anciens étudiants de mon école d'Ingénieurs. J'ai très bien avancé avec vos conseils, notamment avec l'utilisation d'une base de données locale. Je suis maintenant sur la partie Graphique !
Je pense que c'est la plus difficile, car il faut que cela soit beau, intuitif et agréable à utiliser. Pour le moment je me base sur les stages réalisés en France (on verra pour le monde entier si j'ai du temps à tuer après mes partiels), et j'ai pensé mettre une carte de France avec les Régions en tant que bouton plutôt que d'afficher un simple menu. Voici ce que j'ai réalisé pour le moment.
Ma question pose sur la forme des boutons. J'aimerais que mon bouton épouse la forme de la région. Le fond de chaque image est transparent. Tout d'abord est-ce possible de dire à notre bouton de prendre la forme de l'image en tenant compte de la transparence ? Sinon pensez-vous que récupérer la hauteur et la largeur de l'image et attribuer ces propriétés au bouton serait une bonne solution alternative ?
Je vous pose ces questions car je prend l'exemple de l'Alsace et la Lorraine. Vue que la Lorraine est une image plus grande que celle de l'Alsace, et bien on a des difficultés à choisir directement l'Alsace. Les Alsaciens ne vont pas être très content si on ne peut pas choisir leur région favorite !
Je vous remercie d'avance de vos réponses.
Cordialement Walslayer
Je pense que c'est la plus difficile, car il faut que cela soit beau, intuitif et agréable à utiliser. Pour le moment je me base sur les stages réalisés en France (on verra pour le monde entier si j'ai du temps à tuer après mes partiels), et j'ai pensé mettre une carte de France avec les Régions en tant que bouton plutôt que d'afficher un simple menu. Voici ce que j'ai réalisé pour le moment.
Ma question pose sur la forme des boutons. J'aimerais que mon bouton épouse la forme de la région. Le fond de chaque image est transparent. Tout d'abord est-ce possible de dire à notre bouton de prendre la forme de l'image en tenant compte de la transparence ? Sinon pensez-vous que récupérer la hauteur et la largeur de l'image et attribuer ces propriétés au bouton serait une bonne solution alternative ?
Je vous pose ces questions car je prend l'exemple de l'Alsace et la Lorraine. Vue que la Lorraine est une image plus grande que celle de l'Alsace, et bien on a des difficultés à choisir directement l'Alsace. Les Alsaciens ne vont pas être très content si on ne peut pas choisir leur région favorite !
Je vous remercie d'avance de vos réponses.
Cordialement Walslayer
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je me baserais plus sur un touchesBegan, qui analyserait où s'est fait le touch et en déduirait ainsi la région sélectionnée, puis ferait l'action souhaitée.
Le principe : en plus de ton image de carte de France "classique", celle que tu affiches réellement à l'écran, tu prévois la même image mais sur laquelle chaque région ayant une couleur différente au lieu du vert uni (et tout ce qui est à l'extérieur genre l'eau a aussi une couleur particulière). Et tu la sauves dans un format lossless (c'est à dire qui ne risque pas de faire de l'approximation de couleurs lors de la compression de l'image), genre PNG ou GIF.
Cette 2e image ne servira jamais à l'affichage, l'utilisateur ne la verra jamais. Mais quand il va faire un tap sur ta vraie image (celle qui est affichée), tu vas récupérer les coordonnées X et Y du tap sur ta vraie image, et regarder par code quelle est la couleur du pixel à ce même emplacement X,Y mais sur ton image en fausses couleurs. Et selon la couleur de ce pixel, tu sauras sur quelle région l'utilisateur a tapé.
Fichiers pour la détection de transparence : Classe AlphaMask
Le .h
Le .m
Fichiers de la nouvelle classe de bouton : Classe AlphaButton
Le .h
Le .m
Une fois ces fichiers dans votre projet, il vous suffit de changer la classe d'instanciation de vos boutons par celle nouvellement définie "AlphaButton". Et ensuite c'est fini /clap.gif' class='bbc_emoticon' alt=' ' />
Et encore merci de vos réponses, bien cordialement Walslayer
Sinon, l'idée mixée a l'air pas mal du tout. Merci pour le snippet /wink.png' class='bbc_emoticon' alt=';)' />
Sinon pour ceux qui désirent l'utiliser, cela agit sur les images des boutons et pas sur l'image de fond du bouton. Je viens de faire le test. Bonne continuation à tous ! /cliccool.gif' class='bbc_emoticon' alt=' ' />
Cordialement Walslayer
PS : Voici un projet qui utilise le même principe mais qui fonctionne bien mieux. Car avec ce que je vous ai proposé plus haut, j'ai quelques fois des surprises ! Voici le lien : https://github.com/ole/OBShapedButton J'ai testé cette classe et elle fonctionne du feu de dieu /thumbsup.gif' class='bbc_emoticon' alt='' /> Il faut simplement importer les classes OBShapedButton et UIImage+ColorAtPixel dans votre projet et utiliser la classe OBShapedButton pour votre bouton !