Question

J'ai créé une application à vues multiples qui utilise plusieurs contrôleurs pour afficher et contrôler les vues. Le problème que j'ai, c’est que lorsque le simulateur charge initialement la vue, l’en-tête est partiellement recouvert par la barre en haut de l’écran et la barre d’outils située à la base ne touche pas la base de l’écran. J'ai utilisé les attributs de taille du générateur Interface pour contrôler l'affichage lorsque l'iphone tourne et qu'il fonctionne parfaitement. Tout se met parfaitement en place tant en mode paysage qu'en mode portrait APRÈS une rotation, mais le problème réside dans la charge initiale avant la rotation. Vos pensées sont très appréciées. Tony

Était-ce utile?

La solution

J'ai eu des problèmes avec le découpage des vues en fonction du statut, de la navigation et des barres d'onglets. J'ai corrigé la plupart d'entre eux à l'aide de la fonctionnalité Méthodes simulées dans Interface Builder. De cette façon, votre mise en scène dans l'IB est beaucoup plus précise que ce que vous allez réellement obtenir.

Autres conseils

Je suis aux prises avec ce problème pendant des jours et des journées - aucune quantité de tripotage dans IB n'a fonctionné.

Finalement, je l’ai obtenu en ajoutant cette ligne:

mainViewController.view.frame = window.screen.applicationFrame;

à l'application: didFinishLaunchingWithOptions: méthode. (Où mainViewController est le principal UIViewController).

J'ai aussi rencontré ce problème. Plus précisément, lors de l'affichage d'un ADBannerView, tout mon affichage se déplacerait sous la barre d'état et laisserait un petit espace vide de la taille de la barre d'état au bas de l'écran de l'iPhone. Voici comment j'ai résolu le problème: (La réponse d'Adam m'a aidé à comprendre cela):

// In the function that displays an iAD Banner
CGRect contentFrame = self.view.bounds;
CGRect myStatusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
CGFloat statusHeight = myStatusBarFrame.size.height;

// Set the view's origin to be under the status bar.

contentFrame.origin.y = statusHeight;

Je devais définir l'origine de ma vue pour qu'elle soit située sous la barre d'état, ce qui a résolu le problème pour moi.

Le problème est que vous ajoutez votre contrôleur & "incorrectement &"; selon la documentation Apple (bien que IMHO, Apple l’ait mal conçu - par défaut, vous n’avez pas besoin de changer!)

Si vous avez une barre d'état, Apple exige que vous " manuellement " déplacez tous vos contrôleurs vers le bas de 20 pixels (plus précisément, en fonction de la hauteur de la barre d'état - bien que cela reste toujours de 20 pixels, Apple vous permet de demander la hauteur au moment de l'exécution, à partir de la propriété & "statusBarFrame &" dans UIApplication)

Cours d’Apple - par exemple UINavigationController / UITabBarController - se réduisent automatiquement de 20 pixels vers le bas lorsqu'ils sont ajoutés à l'écran. Les deux classes ont un bogue qui leur permet de déplacer même si elles ne sont pas le contrôleur principal - votre application décale alors subitement de 20 pixels supplémentaires, laissant 20 pixels d'espace blanc en haut.

Mais, quand elles tournent, ces classes se débrouillent souvent & "; et revenir en place. Ou vice versa.

c.f. Cliquez sur ce lien pour une explication beaucoup plus détaillée de ce qui se passe et comment écrire votre code comme Apple vous le demande:

http : //blog.red-glasses.com/index.php/tutorials/iphone-auto-rotation-for-intermediate-developers-tutorial-1/

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