2010-08-01 1 views
0

Sur l'iPhone, lorsque vous ajoutez manuellement une sous-vue à la vue de la fenêtre, dois-je comptabiliser moi-même le 20px de la barre d'état supérieure? C'est, dois-je créer des vues avec un ensemble de cadre à (0, 20, 320, 460):Sur l'iPhone, dois-je comptabiliser le 20px de la barre d'état supérieure?

UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)]; 
[window addSubview:myView]; 

Si oui, y at-il des directives officielles relatives à cela? Je suis juste coincé dessus, et après quelques expériences, il semble que ce soit effectivement le cas. Cela impliquerait que lorsqu'une vue est créée à partir d'un fichier nib, elle est toujours décalée silencieusement de 20 pixels, car lorsque l'on utilise Interface Builder, la hauteur de vue est déjà fixée à 460px et lorsque la vue est ajoutée à la fenêtre, elle est déjà correctement positionné.

D'autre part, cela semble un peu maladroit et myope. Pourquoi Apple durcirait-il les 20 pixels et ferait-il la compensation magique? Pourquoi devrais-je, en tant que programmeur, besoin de savoir et d'assumer quoi que ce soit à propos de la barre d'état? Pourquoi la fenêtre n'est-elle pas déjà décalée par elle-même? Est-ce une limitation/problème connu? Ou a-t-il une raison?

+0

Sujet similaire: http://stackoverflow.com/questions/1114557/resize-for-in-call-status-bar/1114596#1114596 – user123444555621

Répondre

0

Lorsque vous définissez des cadres d'affichage, généralement pas.

La barre d'état réduit efficacement votre zone de travail.

Maintenant, j'ai vu quelques exceptions bizarres, mais aucune d'entre elles ne sont pertinentes lors d'un travail d'interface de base.

+0

Hmm - quand je crée une vue comme ceci: UIView * myView = [[ UIView alloc] initWithFrame: CGRectMake (0, 0, 320, 20)]; myView.backgroundColor = [UIColor redColor]; et l'ajouter à la fenêtre, la vue est entièrement couverte par la barre d'état. Mais je suis d'accord avec les excentriques. J'ai vu des gens se plaindre que dans certains cas particuliers, les vues peuvent être décalées de 20px. –

+0

Si vous jetez un oeil à n'importe quel UIViewController XIB et simulez la barre d'état, vous pouvez voir clairement que le système de coordonnées est 0,0 juste sous la barre d'état ... peut-être UIWindow est un cas différent en tant que vue parent. –

Questions connexes