Question

Je vais avoir ma première incursion dans la programmation Cocoa Touch (et un de mes premiers en cacao en général) et d'écrire un simple jeu pour l'iPhone, bien que cette question est sur le point de toucher le cacao en général.

L'interface utilisateur principale se compose d'une bande de boutons à action identiques (ne variant en couleur) disposées horizontalement sur l'écran. Bien qu'ils agissent comme des boutons dont ils ont besoin d'avoir une apparence personnalisée tirée. Chaque événement répond au toucher de la même manière, le déclenchement d'autres événements dans l'application.

Je veux définir une vue personnalisée, en partie pour avoir plus de contrôle sur le comportement que d'avoir juste un tas de boutons standard, et en partie pour en savoir plus sur la programmation de cacao.

  • Dois-je définir une vue principale avec un tableau de sous-vues dont chacun se dessine et les événements tactiles avant? Chaque bouton doit faire des choses comme la montrer un état pressé quand on les touche et ainsi de suite . Y a-t-il des vues de conteneurs préexistantes pour ce genre de scénario?

  • Ou devrais-je définir une seule vue principale qui attire toute la bande et détecte où se produit une touche Je pense que c'est une approche mal conçue? - Je ne devrais pas être touché Ecriture des tests code.


Sous la direction de clarifier la question

Était-ce utile?

La solution

L'approche la plus légère est d'ajouter des sous-couches à la couche de votre UIView. Utilisez hitTest:. À être envoyé touches que vous recevez sur vous UIView à l'instance CALayer qui doit recevoir

Si vous avez besoin de plus du comportement UIResponder (touchesBegan etc.), vous voudrez peut-être aller avec subviews au lieu de sous-couches car cela vous permettra de gérer les événements directement dans les objets plutôt que de devoir les envoyer d'un répondeur central (votre principale UIView).

Par conséquent, le bit essentiel peut être juste à quel point le comportement associé à vos boutons individuels doivent être connus (géré) par la votre UIView principale. S'il est logique d'avoir tout contrôlé à partir d'une place centrale, vous pouvez mettre toute la logique dans le UIView et il suffit d'utiliser des sous-couches à des fins d'affichage légers. S'il est plus logique de mettre le comportement dans les boutons eux-mêmes, ils shoudl être UIResponders et en tant que telle sous-classe UIView et être ajoutés en tant que sous-vues de votre point de vue principal.

Autres conseils

Vous devez utiliser un tableau de sous-vues -. De cette façon chaque classe « bouton » sait se dessiner et son superview (votre « vue principale », a déclaré) place les boutons où ils ont besoin pour aller

Et en second lieu sur la NDA: il suffit de parler de l'iPhone

.

Si vous avez beaucoup de boutons et que vous voulez faire des choses de fantaisie avec eux, je recommande d'utiliser couches . Votre UIView traitera l'interprétation qui couche avait le contact (test de recherche) et  répondre de façon appropriée. Si tout ce que vous faites est la gestion d'un tas de boutons avec divers effets et animations, cela pourrait être une voie plus facile.

En ce qui concerne l'ingénierie mauvais, pas du tout. Si vous jetez un oeil sur les guides associés, vous verrez l'animation de base et les couches ne nécessite des tests frappé (bien que ce soit relativement facile), mais il est beaucoup plus propre que le fait UIView tout le dessin et plus efficace que de nombreux sous-vues. Il se glisse juste entre ces deux approches bien.

La divulgation complète: J'enroulant juste ma tête comment exploiter au mieux ce genre de choses moi-même, mais pour les contrôles interactifs plus complexes

.

Vous pouvez la disposition de votre vue dans Interface Builder. Il suffit de glisser un tas de UIButtons dans la vue du contrôleur de votre vue.

Pour répondre aux événements, vous définissez un IBAction dans votre contrôleur de vue et connecter les boutons à elle.

Ceci est très basique. Je suggère vraiment que vous marchez au moins grâce à l'introduction de la programmation iPhone que Apple a en ligne. Il vous apprendra iPhone et l'interface de base Builder.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top