62 votes

Obtenez de l'iPhone Barre d'État Hauteur

J'ai besoin de redimensionner certains éléments en fonction de la hauteur de l'iPhone de la Barre d'État. Je sais que la barre d'état est généralement de 20 points élevés, mais ce n'est pas le cas quand il est en mode tethering. Il obtient doublé à 40. Quelle est la méthode appropriée pour déterminer pour déterminer, c'est la hauteur? J'ai essayé

[[UIApplication sharedApplication] statusBarFrame]

mais il me donne 20 x 480 dans un paysage qui est correct, mais alors il me donne 320 x 40 dans le portrait. Pourquoi n'est-il pas me donner l'opposé de (40 x 320)?

81voto

ThomasW Points 8078

Le statusBarFrame renvoie l'image en coordonnées d'écran. Je crois que la bonne façon d'obtenir ce que cela correspond à des coordonnées de la vue est de faire ce qui suit:

- (CGRect)statusBarFrameViewRect:(UIView*)view 
{
    CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];

    CGRect statusBarWindowRect = [view.window convertRect:statusBarFrame fromWindow: nil];

    CGRect statusBarViewRect = [view convertRect:statusBarWindowRect fromView: nil];

    return statusBarViewRect;
}

Maintenant, dans la plupart des cas, la fenêtre utilise les mêmes coordonnées que l'écran, de sorte [UIWindow convertRect:fromWindow:] ne change rien, mais dans le cas où ils pourraient être différents, cette méthode devrait faire la bonne chose.

16voto

o15a3d4l11s2 Points 1641

Avez-vous de faire comme ceci:

CGRect rect;

rect = [[UIApplication sharedApplication] statusBarFrame];
NSLog(@"Statusbar frame: %1.0f, %1.0f, %1.0f, %1.0f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);

7voto

David Douglas Points 1410

Cette méthode fonctionne pour le portrait et orientation paysage.

-(float) statusBarHeight
{
    CGSize statusBarSize = [[UIApplication sharedApplication] statusBarFrame].size;
    return MIN(statusBarSize.width, statusBarSize.height);
}

// example call
float statusBarHeight = [self statusBarHeight];

6voto

Martin Points 145

Vous pouvez tester ce qui est la moindre des deux valeurs, qui sera la véritable hauteur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X