Vous ne pouvez pas modifier directement la taille d'un UINavigationController ou de ses sous-vues, car UINavigationController les redimensionne automatiquement en plein écran, quel que soit le réglage de leurs cadres. La seule façon que je suis en mesure de surmonter ce jusqu'à présent est la suivante:
D'abord, créer une instance de UINavigationController comme vous le feriez normalement:
UINavigationController *nc = [[UINavigationController alloc] init];
self.navController = nc;
[nc release];
Ensuite, créez une instance de UIView, contraint de la taille que vous voulez vraiment:
UIView *navView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, DESIRED_HEIGHT)];
navView.clipsToBounds = YES;
[navView addSubview:self.navController.view];
[self.view addSubview:navView];
[navView release];
la propriété de NavView clipsToBounds doit être réglé sur OUI, ou la UINavigationController et sa vue apparaît toujours plein écran. Ensuite, ajoutez le UINavigationController à cette vue contrainte. Cet UIView peut ensuite être ajouté à la vue de UIViewController, comme vu ci-dessus. Le point à noter est que les vues de UIViewController ajoutées à UINavigationController verront toutes leur contenu contraint aux limites de navView, et non le cadre des sous-vues ajoutées à UINavigationController, de sorte que le contenu de chaque sous-vue doit être créé pour afficher correctement pour les limites de navView.
Dans tous les cas, cette technique fonctionne, car j'ai créé une application qui l'utilise avec succès. La seule autre façon que j'ai pu faire pour que cela fonctionne est de créer une classe de contrôleur de navigation personnalisée à partir de zéro, répliquant la fonctionnalité de UINavigationController, mais sans le redimensionnement automatique (ce que j'ai déjà fait dans le passé), et cela peut être une douleur. J'espère que cela t'aides.
Comment avez-vous résolu ceci? – Zebs
@bentford Comment * as-tu résolu ceci? –
Qui étiez-vous, DenverCode9? QU'AS-TU VU?! – buley