À partir d'iOS7, les contrôleurs de vue utilisent la mise en page plein écran par défaut. Dans le même temps, vous avez plus de contrôle sur la façon dont il expose ses vues, et thats fait avec ces propriétés: Fondamentalement, avec cette propriété, vous définissez les côtés de votre vue peut être étendu pour couvrir l'écran entier. Imaginez que vous poussez un UIViewController dans un UINavigationController. Quand la vue de ce contrôleur de vue est disposée, elle commencera là où la barre de navigation se termine, mais cette propriété définira les côtés de la vue (en haut, à gauche, en bas, à droite) qui peuvent être étendus pour remplir l'écran entier. Laissez le voir avec un exemple: Ici, vous ne définissez pas la valeur de edgesForAxtendedLayout. Par conséquent la valeur par défaut est prise (UIRectEdgeAll), de sorte que la vue étend sa mise en page pour remplir l'écran entier. Ceci est le résultat: Comme vous pouvez le voir, le fond rouge s'étend derrière la barre de navigation et la barre d'état. Maintenant, vous allez définir cette valeur sur UIRectEdgeNone. Vous indiquez au contrôleur de vue de ne pas étendre la vue pour couvrir l'écran: Cette propriété est utilisée lorsque votre vue est un UIScrollView ou similaire, comme un UITableView. Vous voulez que votre table commence où la barre de navigation se termine, parce que vous ne verrez pas le contenu entier sinon, mais en même temps, vous voulez que votre table couvre l'ensemble de l'écran lors du défilement. Dans ce cas, l'ajustement de edgesForAxtendedLayout à Aucun ne fonctionnera pas car votre table commencera à défiler où la barre de navigation se termine et elle ne va pas derrière elle. Voici où cette propriété est pratique, si vous laissez le contrôleur de vue automatiquement ajuster les inserts (en définissant cette propriété sur OUI, également la valeur par défaut), il ajoutera inséré au haut de la table, de sorte que la table commencera où la navigation Bar, mais le défilement couvrira tout l'écran. C'est alors qu'est réglé sur NON: Et OUI (par défaut): Dans les deux cas, la table défile derrière la barre de navigation, mais dans le deuxième cas (OUI), elle commencera en dessous de la barre de navigation. Cette valeur est juste un ajout aux précédentes. Si la barre d'état est opaque, les vues ne seront pas étendues pour inclure la barre d'état trop, à moins que ce paramètre soit OUI. Donc, si vous étendez votre vue pour couvrir la barre de navigation (edgeForExtendedLayout à UIRectEdgeAll) et le paramètre est NON (par défaut), il ne couvrira pas la barre d'état si son opaque. Si quelque chose n'est pas clair, écrire un commentaire et réponse mal à elle. Comment iOS sait ce que UIScrollView à utiliser iOS saisit la première sous vue dans votre vue viewcontrollers, donc celui de l'index 0, et si c'est une sous classe de UIScrollView applique alors les propriétés expliquées à elle. Bien sûr, cela signifie que UITableViewController fonctionne par défaut (puisque l'UITableView est la première vue).View est affiché sous la barre d'état dans iOS 7 et EdgesForExtendedLayout ne m'aide pas J'ai un problème que ma vue est diplayed sous la barre d'état. Après la recherche j'ai trouvé que j'ai dû ajouter this. EdgesForExtendedLayout UIRectEdge. None au ViewDidLoad () du ViewController, mais il ne fonctionne pas pour moi. A titre de référence, j'ai utilisé l'exemple helloiPad de xamarin (docs. xamarinsamplesHelloiPad) Ajout d'une étiquette le positionnant en haut de l'écran dans IB. Dans iOS6 il est affiché correctement. Maintenant, j'ai ajouté la ligne this. EdgesForExtendedLayout UIRectEdge. None et l'exécuter dans le simulateur iOS7, l'étiquette est affichée dans la barre d'état. Qu'est ce que je fais mal
No comments:
Post a Comment