La réponse de base consiste à créer une vue en haut de la hiérarchie de vue. Prenons l'exemple de la capture d'écran basée sur une vue tabulaire ci-dessus. Disons que le contrôleur de vue racine pour l'application est une sous-classe de UITabBarController
appelée RootViewController
.
Normalement, votre délégué d'application aura une méthode qui ressemble à ceci:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
[window addSubview:rootViewController.view];
[window makeKeyAndVisible];
}
Si vous voulez que votre vue juste « chevauchement », c'est simple. Disons que vous voulez que votre "vue persistante" soit de 100 pixels de haut et étire la largeur de l'écran. Supposons que vous ayez déjà créé une classe pour cette vue et qu'elle s'appelle PeristentView. Votre code ressemblerait à quelque chose comme ceci:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
[window addSubview:rootViewController.view];
PersistentView* persistentView = [[PersistentView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)];
[window addSubview:persistentView];
[persistentView release];
[window makeKeyAndVisible];
}
L'ordre ici est important parce que vous voulez la vue persistante d'être ci-dessous dans la hiérarchie de la vue, de sorte que view
du rootViewController
attire d'abord, puis la vue persistante tire deuxième .
Si vous souhaitez que la vue persistante "pousse" le reste des vues à l'écran, vous devrez le modifier légèrement. Étant donné que par défaut vous indiquez à la fenêtre d'ajouter l'intégralité de la vue du contrôleur de vue racine en tant que sous-vue, vous devez redimensionner le frame
de rootViewController.view
afin qu'il ne prenne pas tout l'écran et ne repositionne pas origin
.
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
PersistentView* persistentView = [[PersistentView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)];
[window addSubview:persistentView];
[persistentView release];
CGRect frame = rootViewController.view.frame;
frame.size.height -= persistentView.frame.size.height;
frame.origin.y += persistentView.frame.size.height;
rootViewController.view.frame = frame;
[window addSubview:rootViewController.view];
[window makeKeyAndVisible];
}
Je viens de tester cela avec un projet basé bar-onglet existant (en utilisant une plaine UIView
au lieu de créer une classe de PersistentView pour amorcer le test) et il fonctionne très bien.