web-dev-qa-db-fra.com

iPhone: comment configurer le cadre UIViewController?

J'ai un UIViewController racine que j'ajoute d'autres UIViewController comme sous-vues. Actuellement, chacune des sous-vues est trop basse (couvrant ma barre d'onglets de construction personnalisée). Lorsque j'essaie de quelque chose comme ce qui suit, cela ne fonctionne pas:

// Test setting frame size to see if it works
self.view.frame = CGRectMake(0, 0, 200, 200);

Cela ne change rien à la taille du cadre.

Donc, ma question est, comment puis-je définir mon cadre lorsque le UIViewController est initialisé après avoir été ajouté en tant que sous-vue?

19
Nic Hubbard

@Nic je pense que lorsque vous ajoutez cette autre vue, à ce moment-là, vous devez définir la taille du cadre des autres vues comme ceci:

Someviewcontroller *c = initWithNibName
c.view.frame = CGRectMake(0, 0, 200, 200);
[self addSubView:c];

je ne sais pas si cela fonctionnera mais c'est quelque chose comme ça.

21
Robin

Tout d'abord, assurez-vous que votre cadre ne change pas de taille. Probablement qu'il/est/change de taille, mais vous vous attendez à ce qu'il coupe son contenu; ce comportement n'est pas activé par défaut sur une UIView, et devrait être défini via:

  [[self view] setClipsToBounds:YES];

Pour vérifier et vous assurer que votre cadre ne change pas de taille après avoir défini le nouveau cadre, essayez de vous connecter ceci:

  NSLog(@"New frame is: %@", NSStringFromCGRect([[self view] frame]));

ou simplement définir un point d'arrêt après la modification et inspecter la valeur dans votre débogueur.

6
Chris Zelenak

Ensuite, il y a toujours ...

// Screen, less StatusBar
CGRect l_RectFrame = [UIScreen mainScreen].applicationFrame;

OU...

// Entire Screen
CGRect l_RectFrame = [UIScreen mainScreen].bounds;


MyView *l_aView = [[MyView alloc] initWithFrame:l_RectFrame];
...
4
Paul Brady