2010-05-30 8 views
0

Je souhaite créer une superposition partiellement transparente qui couvre tout l'écran, y compris la barre d'état. J'ai vu que les gens au tapbots font exactement cela. Donc, il doit être possible en quelque sorte. La barre d'état devrait toujours être visible!Comment faire une vue qui couvre tout l'écran, y compris la barre d'état?

+0

Envisagez de repenser votre conception. Pourquoi avez-vous besoin d'obscurcir la barre d'état? Même si une autre application le fait, cela pourrait encore vous faire rejeter d'Apple pour violation de l'interface utilisateur, en raison du processus de révision incohérent. –

Répondre

0

Avant iPhoneOS 3.2:

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; 

après iPhoneOS 3.2:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationNone]; 

Pour plus d'informations sur ceux-ci, consultez la documentation UIApplication.

+0

cela masque la barre d'état. Mais je veux qu'il reste là, et couvre-le! – dontWatchMyProfile

+0

Comment savez-vous qu'il est toujours là s'il est couvert? –

+0

Oh, vous voulez que la vue soit partiellement transparente, je vois. –

0

Il y a deux façons de cacher la barre d'état:

Programaticaly lors de l'exécution en utilisant UIApplication sharedApplication:

- (void)setStatusBarHidden:(BOOL)hiddenwithAnimation:(UIStatusBarAnimation_)animation 

ou au moment de la conception en utilisant la propriété Info.plist UIStatusBarHidden oui/non valeur.

0

Vous pouvez essayer de créer une vue en taille réelle et de l'ajouter en tant que sous-vue de votre fenêtre principale. Quelque chose comme:

CGRect mainWindowSize = [UIScreen mainScreen].bounds; 
UIView* overlay = [[UIView alloc] initWithFrame:mainWindowSize]; 
// Use colorWithRed:green:blue:alpha: or a solid color then manually tweak alpha 
overlay.backgroundColor = [UIColor redColor]; 
overlay.alpha = 0.2; // transparency level 
overlay.userInteractionEnabled = YES; 
// Add it on top of the main window 
UIWindow* mainWindow = (((MyAppDelegate*) 
      [UIApplication sharedApplication].delegate).window); 
[mainWindow addSubview:overlay]; 

Avertissements: Vous devrez peut-être masquer manuellement la barre d'état. En outre, cette vue de superposition et ses sous-vues vont obtenir tous les événements de robinet de l'utilisateur. Peut vouloir s'assurer que c'est ce que vous voulez.

0

pousser le contrôleur de vue comme modalViewController ....

si votre contrôleur de vue est AVC et en supposant que vous utilisez un contrôleur de navigation:

[self presentModalViewController:AVC animated:YES]; 

du contrôleur de vue actuel, vous êtes.

Questions connexes