web-dev-qa-db-fra.com

UIView plein écran avec barre d'état et incrustation de barre de navigation en haut

Quelle est la manière appropriée d'implémenter la barre d'état et la barre de navigation qui s'ajoutent à UIView?

alt text http://img.skitch.com/20081217-t78sdixk37hqgdh1ia2fgec4st.png

51
leonho

Il suffit de définir "souhaite la disposition plein écran" dans votre contrôleur de vue. Cela résout le problème pour moi.

self.wantsFullScreenLayout = YES;
45
Jonathan Sterling

Dans la capture d'écran ci-dessus, il y a une barre d'état translucide et une barre de navigation translucide.

La barre d'état est définie à l'aide de

[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent];

La barre de navigation est définie à l'aide de

theNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
23
August

Si vous avez un contrôleur de vue à l'intérieur d'un contrôleur de navigation et que vous souhaitez masquer la barre d'état afin que l'affichage de votre viewController soit plein écran, vous pouvez toujours appeler

[self.navigationController.view setNeedsLayout];

après avoir caché la barre d'état . Mais personnellement, je pense

[self setWantsFullScreenLayout:YES];

est un meilleur moyen.

14
Unfalkster

La meilleure façon que j’ai trouvée est la suivante: lorsqu’on utilise une hiérarchie "complexe" de la barre d’onglets contenant les contrôleurs de navigation, une vue "détaillée" étant une vue plein écran.

Dans le délégué de l'application juste avant que la vue du contrôleur de la barre d'onglets soit ajoutée à la fenêtre, j'ai ajouté ceci:

tabBarController.view.frame = [[UIScreen mainScreen] bounds];

Ainsi, le contrôleur de la barre d’onglets couvrira l’ensemble de l’écran, même sous la zone de la barre d’état. J'ai dû compenser des hauteurs de plusieurs vues jusqu'à + 20 pixels, notamment les barres de navigation. 

4
Alfons

Définissez le style de barre d'état sur noir translucide et le style de barre de navigation sur noir translucide. Si vous utilisez une application basée sur la navigation, vérifiez dans MainWindow.xib que la barre d'état est masquée et que la barre de navigation est masquée.

Lorsque l'utilisateur touche l'écran, lancez un chronomètre pour voir s'il s'agit d'un simple tap ou d'un double tap. Si vous appuyez une seule fois, masquez la barre d'état et la barre de navigation = NON. et lorsque l’activité de l’utilisateur s’arrête, redémarrez un chronomètre. après un certain temps d'inactivité, faites-les à nouveau cachés.

0
lostInTransit

step 1 Définissez UIViewControllerBasedStatusBarAppearance sur No dans le plist.

Ajoutez ensuite le code suivant dans l'option de lancement terminé

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

S'il vous plaît suivez ce code cela a fonctionné pour moi 

0
Preejith augustine