Wednesday, 8 February 2017

Edgesforextendedlayout Storyboard Exemple

Dans mes piles de navigation enfant, je définis edgesForFextendedLayout. Non Quand je clique sur le bouton de retour, l'UITableView dans mon parent est déplacé vers le haut, comme si la barre de navigation n'existe pas. (La barre de navigation couvre la table). Pourquoi le paramètre edge childs affecte-t-il son parent? Je veux seulement qu'il affecte le viewController courant. Dans mon parent, voici comment j'ai créé l'UITableView: Peut-être que je définis le cadre tableViews de manière incorrecte Je veux que la table commence sous la barre de navigation, mais fin avant la barre d'onglets. J'ai essayé de reproduire votre problème comme ceci: Mettre en place un UITableView dans un UIViewController avec une seule cellule qui pousse un nouvel UIViewController. Dans cette vue, le contrôleur visualiseDidLoad. Je définis self. edgesForExtendedLayout. None. Quand je presse quotbackquot pour revenir à l'UITableViewController. Je ne vois aucun changement à la position de la vue de tableau. Est-ce que vous modifiez les edgeForExtendedLayout sur le UINavigationController directement ndash JAL Apr 27 16 à 20: 15Avant de démarrer dans 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 si non, mais en même temps, vous voulez que votre table pour couvrir l'écran entier 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 celle 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).


No comments:

Post a Comment