view-controller-frame-Größe in Kind-controller

Ich die Umsetzung UIViewcontroller containment. Im Beispiel unten habe ich die frame-Größe des childcontrollers in der rootcontroller. Der untergeordneten Ansicht angezeigt, als die Größe, die ich eingestellt habe, aber wenn ich die Kontrolle über die Grenzen, innerhalb container1 es Berichte, die eine andere Größe als die Größe, die ich einstellen.

Rootcontroller (container)

- (void)viewDidLoad
{
  [super viewDidLoad];


self.containA = [[Container1 alloc]init];
self.containB = [[Container2 alloc]init];

 self.containA.view.frame = CGRectMake(50, 50,50, 50);
 self.containB.view.frame = CGRectMake(50, 50, 300, 300);

   [self addChildViewController:self.containA];
   [self addChildViewController:self.containB];

  [self.view addSubview:self.containA.view];

Container1

-(void)viewDidLoad {
    [super viewDidLoad];




UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
//[self.view addSubview:view];
self.view = view;
self.view.backgroundColor = [UIColor redColor];
[view release];
 NSLog(@"view dims %f %f",self.view.bounds.size.width,self.view.bounds.size.height);
}

Ausgabe in der Konsole von container 1
Blick trübt 768.000000 1004.000000

Ich dachte, die Frage bezog sich auf die Einstellung der Ansicht-Rahmen zu UIScreen main screen]applicationFrame .So entfernte ich alle diese Codes, damit die uiview wird automatisch erstellt. Die Frage bleibt immer noch..

  • Ich bin mir ziemlich sicher, btw, die Einstellung selbst.Blick in viewDidLoad ist ein Fehler. Vielleicht sind Sie denken loadView? developer.apple.com/library/ios/#documentation/uikit/reference/...
  • richtig ist, müssen Sie definitiv nicht setzen Sie Ihre anzeigen innerhalb von -viewDidLoad. Wenn Sie programmgesteuert erstellen Ihre anzeigen, statt mit einem storyboard oder nib, müssen Sie ihn erstellen, und legen Sie es -loadView. Auch ein view-controller sollte sich wirklich nie ändern, seine Sicht-Rahmen. Die übergeordnete Steuerung oder das Fenster immer zu tun.
  • vielen Dank für die Anleitung, so in meinem Fall, wo ich zwei view-Controllern eingebettet in eine übergeordnete, wie würde ich Ihre Größe von den Eltern?Ich könnte es in jedem controller selbst, sondern wie Sie vorgeschlagen haben, und ich würde Zustimmen, dass dies nicht der eleganteste Weg, um Dinge zu tun. Sorry für die 101 Fragen, aber ich bin verwendet, um die one-view-controller pro Bildschirm, diese Eindämmung workflow ist alles neu für mich.
InformationsquelleAutor coasty | 2012-07-08
Schreibe einen Kommentar