Question

J'ai une application à l'aide d'un UITabBarController, et j'ai une autre vue que les besoins de glisser vers le haut derrière les commandes de la barre d'onglets, mais en face du contenu de la barre d'onglets. Si ce n'est pas clair, imaginez une publicité glisser vers le haut dans une application à onglets qui apparaît devant tout sauf pour les boutons de la barre d'onglet.

Jusqu'à présent, j'ai le code qui ressemble à quelque chose comme ça, mais je suis prêt à changer s'il y a une meilleure façon de le faire ...

tabBarController.viewControllers = [NSArray arrayWithObjects:locationNavController, emergencyNavController, finderNavController, newsNavController, nil]; 

aboutView = [[AboutView alloc] initWithFrame:CGRectMake(0, window.frame.size.height - tabBarController.tabBar.frame.size.height - 37 ,
                                                        320, window.frame.size.height - tabBarController.tabBar.frame.size.height)];


[window addSubview:tabBarController.view];    // adds the tab bar's view property to the window
[window addSubview:aboutView]; // this is the view that slides in
[window makeKeyAndVisible];

À l'heure actuelle aboutView est une sous-classe de UIView et se trouve à sa position de départ au fond, mais il cache la tabBarController. Comment puis-je changer pour laisser les onglets être sur le dessus, mais toujours la aboutView en face de l'autre contenu?

Était-ce utile?

La solution

Vous devez ajouter le aboutView en tant que sous-vue de la vue dans le contrôleur de vue actuellement actif dans le UITableBarController . Vous pouvez accéder à ce point de vue via le selectedViewController propriété.

Vous pouvez ajouter du code à votre implémentation de aboutView pour animer le point de vue quand il apparaît.

Je fais quelque chose comme ça dans une vue contextuelle que je veux apparaître sous les commandes de la barre d'onglets. Vous pouvez ajouter du code à la didMoveToSuperview message sur la mise en œuvre de aboutView:

- (void)didMoveToSuperview
{
    CGRect currentFrame = self.frame;

    // animate the frame ... this just moves the view up a 10 pixels. You will want to
    // slide the view all the way to the top
    CGRect targetFrame = CGRectOffset(currentFrame, 0, -10);

    // start the animation block and set the offset
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5]; // animation duration in seconds
    [UIView setAnimationDelegate:self];

    self.frame = targetFrame;

    [UIView commitAnimations];  
}

Ainsi, lorsque votre aboutView est ajouté à la vue du contrôleur de vue sélectionnée, il anime automatiquement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top