web-dev-qa-db-fra.com

Comment définir les propriétés "étendre les bords" de UIViewController

Je vois les sélections suivantes dans Storyboard pour étendre les bords de la vue d'un UIViewController sous navBars/tabBars:

enter image description here

Mais comment définir ces propriétés globalement pour tous mes ViewControllers dans le code? Au lieu de vérifier/décocher manuellement sur chaque ViewController dans Storyboard.

29
hgwhittle

Il existe quelques nouvelles propriétés dans iOS7 pour contrôler ces paramètres.

edgesForExtendedLayout indique quels bords doivent être étendus (gauche, droite, haut, bas, tout, aucun ou une combinaison de ceux-ci). L'extension du bord inférieur est égale à la coche "Sous les barres inférieures", l'extension du bord supérieur est égale à la coche "Sous les barres supérieures".

extendedLayoutIncludesOpaqueBars indique si les bords doivent être automatiquement étendus sous les barres opaques. Donc, si vous combinez ces deux paramètres, vous pouvez imiter toute combinaison de ticks de générateur d'interface dans votre code.

67
dieworld

Si vous ne voulez pas étendre à des bords, ajoutez simplement:

let viewController = UIViewController()
viewController.edgesForExtendedLayout = []
14
Shaked Sayag

Dans l'objectif-C:

- (void) viewDidLoad {
   [super viewDidLoad];
   [self initVars];
}

- (void) initVars {
   self.edgesForExtendedLayout = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeRight | UIRectEdgeBottom;
   self.extendedLayoutIncludesOpaqueBars = YES;
}

Les propriétés que vous souhaitez sont:

self.edgesForExtendedLayout = UIRectEdgeTop | UIRectEdgeBottom;
3
jordiz