2009-12-21 4 views
1

Aujourd'hui, j'implémente le mode paysage pour mon application. C'est une application ouverte. Je l'ai fait pivoter de 90 degrés. La première chose que je remarque est que les touches ne fonctionnent plus. La raison en est que l'appel à locationInView donne toujours les coordonnées comme si l'application était en mode portrait.Mode paysage et locationInview in opengl es

Comment les gens gèrent-ils généralement cela? Dois-je écrire ma propre version de locationInView pour prendre en compte l'orientation du téléphone? Ou y a-t-il un meilleur moyen?

Répondre

2

C'est le comportement par défaut. Que l'iPhone soit en mode portrait ou paysage, les coordonnées de l'écran ne changent pas, vous devrez donc ajuster cela dans votre application.

1

Fondamentalement deux approches, chacune avec leurs propres inconvénients/actifs.

  1. Vous pouvez joindre votre GLView à un viewcontroller et laisser gérer les événements de rotation et la fenêtre traduire les coordonnées en coordonnées « vue ». C'est la méthode la plus simple, mais votre performance de dessin pourrait être compromise.

  2. Gérez la rotation vous-même. Vous devrez ajouter vos propres méthodes pour gérer les rotations, pilotées par la notification UIDeviceOrientationDidChangeNotification. Cette méthode doit inclure les commandes GL pour faire pivoter la matrice, traduire les touches, etc.