Monday, March 6, 2017

Borduresd'Environnement Étendu

J'ai un UINavigationController comme mon UIWindows rootViewController et un UIViewController (ControllerA) qui supporte uniquement l'orientation Portrait est ajouté à l'UINavigationController comme rootViewController. À un certain moment plus tard, je remplace UINavigationControllers rootViewController par un nouveau UIViewController (ControllerB). ControllerB prend en charge les modes Portrait et Paysage. Je veux que mon écran initial (ControllerA) ne fonctionne que dans Portrait alors que le reste de l'application peut prendre en charge à la fois Portrait et Paysage. Si je lance mon application en mode Paysage qui n'est pas gérée par ControllerA et que je passe à ControllerB, mon contenu (barre d'état) est encore en mode Portrait. Si je tourne manuellement le périphérique à ce point, j'ai la disposition de contenu correcte. Comment puis-je rendre ControllerB se rendre dans l'orientation de l'appareil Heres ce que je vois à la fois de ControllerA et ControllerB viewWillAppear méthode: Guide de mise en page Une des responsabilités d'un conteneur de contrôleur de vue est de mise en page ses vues de contrôleur enfant. Ce guide explique comment vous pouvez le contrôler. Reveal vs Peek Amount C'est la façon dont vous spécifiez la position horizontale de la vue de dessus lorsqu'elle est ancrée sur un côté. Il est important de connaître la différence entre le repère ancrée et les quantités de peaux ancrées lors du soutien de plusieurs orientations et tailles d'écran. Si vous n'avez besoin que d'une seule orientation sur une taille d'écran spécifique, alors la différence n'a pas d'importance. Reveal (Reveal) Le montant horizontal de la sous vue à afficher. Peek Le montant horizontal de la vue de dessus à afficher. La convention d'appellation pour les propriétés: ancre (gauche ou droite) (Reveal ou Peek) Montant. La combinaison de toutes les possibilités conduit à ces quatre propriétés: anchorLeftPeekAmount anchorLeftRevealAmount anchorRightPeekAmount anchorRightRevealAmount Régler le montant de révéler sur un côté permettra de calculer la quantité de peek pour ce même côté et vice versa. La propriété que vous définissez sera une valeur fixe entraînant la calculation de l'autre. Il s'agit d'une propriété intégrée à UIViewController. Voici une description de l'iOS 7 Guide de transition de l'interface utilisateur: La propriété edgesForFixedendLayout utilise le type UIRectEdge, qui spécifie chacun des rectangles quatre arêtes, en plus de spécifier aucun et tous. Utilisez edgeForExtendedLayout pour spécifier les bords d'une vue doivent être étendus, indépendamment de la translucidité de la barre. Par défaut, la valeur de cette propriété est UIRectEdgeAll. ECSlidingViewController utilise cette valeur pour décider sur laquelle des bords de vues pour étendre dehors au conteneur. Si un bord n'est pas étendu, il sera placé sur le guide de mise en page. Il s'agit du même comportement que les conteneurs du contrôleur de vue UIKit, sauf que les bords latéraux ont une signification. En laissant UIRectEdgeTop hors du borduresForExtendedLayout masque placera le bord supérieur sur le guide de mise en page supérieur. En laissant UIRectEdgeBottom hors du borduresForExtendedLayout masque placera le bord supérieur sur le guide de mise en page inférieur. En laissant UIRectEdgeLeft hors du borduresForExtendedLayout, le masque placera le bord gauche à l'endroit où le bord supérieur de la vue de dessus sera ancré à gauche. Cela affecte uniquement les contrôleurs de vue utilisés comme sousRightViewController. Il peut occuper toute la largeur du conteneur ou alors il sera égal au montant révélateur (qu'il soit fixe ou calculé). Quitter UIRectEdgeRight hors du borduresForExtendedLayout masque placera le bord droit à l'endroit où le bord supérieur de gauche vues serait quand ancré à droite. Cela affecte uniquement les contrôleurs de vue utilisés comme sousLeftViewController. Il peut occuper toute la largeur du conteneur ou alors il sera égal au montant révélateur (qu'il soit fixe ou calculé). La disposition des vues supérieure et inférieure peut être personnalisée. Ceci est fait en créant un objet conforme au protocole ECSlidingViewControllerLayout et en le renvoyant dans la méthode de délégué des contrôleurs de vue glissante: slidingViewController: layoutControllerForTopViewPosition: ECSlidingViewControllerLayout a une seule méthode à implémenter: Vous devez retourner un CGRect représentant un cadre pour le viewController donné et TopViewPosition. Vous pouvez retourner CGRectInfinite à repli sur la disposition par défaut. Renvoie un CGRect qui est calculé en fonction du cadre de vue slidingViewController s. S'il est fixe ou basé sur le cadre d'écran, les changements de rotation et de limites peuvent briser la disposition. Positionnez la vue de dessus en fonction des montants ancrés de slidingViewController s. Conservez la sémantique de la topViewPosition. Par exemple, si topViewPosition est ECSlidingViewControllerTopViewPositionAnchoredRight. Puis positionnez la vue de dessus quelque part vers la droite. Depuis ce qui précède sont des suggestions. Vous n'avez pas à les suivre. Il suffit de savoir les conséquences que vous pouvez briser la disposition de rotation ou la sémantique de l'API ECSlidingViewController.


No comments:

Post a Comment