2010-07-27 19 views
6

Ich habe eine UIView in einem UITabController. Und es ist ein UITableView drin.Autoresize von uiview

Wenn Sie in der Anrufstatusleiste hin- und herschalten, wird nichts unternommen und die Größe der Ansicht wird nicht automatisch angepasst.

Es nimmt die richtige Größe an, je nachdem, ob der In-Call UIStatusBar umgeschaltet wurde, wenn die App startet, aber wenn die UIStatusBar umgeschaltet wird, während die App läuft, ändert sich nichts.

Eine andere Registerkarte Ansicht mit einem UINavigationController scheint die Größe zu ändern.

Hier ist der Code

 
if ([indexPath indexAtPosition:0] == 0 || [indexPath indexAtPosition:0] == 1) { 
     if (!airportChooser) { 
      airportChooser = [[AirportChooserController alloc] init]; 
      airportChooser.targetController = self; 
      airportChooser.view.autoresizesSubviews = YES; 
      airportChooser.view.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
      [airportChooser.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth]; 
     } 
     airportChooser.target = [indexPath indexAtPosition:0]; 
     [self.parentViewController.parentViewController.view addSubview:airportChooser.view]; 
     self.parentViewController.parentViewController.view.autoresizesSubviews = YES; 
     self.parentViewController.parentViewController.view.contentMode = UIViewContentModeRedraw; 
     [self.parentViewController.parentViewController.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth]; 
     airportChooser.view.contentMode = UIViewContentModeRedraw; 
     //[airportChooser open]; 
    } 

Antwort

13

Haben Sie das Ändern der Größe Maske des UIView richtig eingestellt? Sie können es in Interface Builder in der Registerkarte Größe festlegen, es sind die roten Linien, auf die Sie klicken können.

Sie können es auch im Code festgelegt etwas mit wie:

[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | 
          UIViewAutoresizingFlexibleHeight]; 

auch sicherstellen, dass der Super autoresizesSubviews auf YES gesetzt hat.

Weitere Informationen hierzu finden Sie in der UIView documentation.

+1

Ich habe beides gemacht, aber immer noch kein Glück Ich füge jetzt die Ansicht in das Fenster (behoben das vorherige Beispiel mit Push View Controller) und es hat den gleichen Effekt wie zuvor beschrieben Es fügt die Ansicht hinzu an der richtigen Stelle abhängig von der Position auf der Statusleiste, aber nicht anpassen, sobald es geöffnet ist wenn ich die Unteransicht in der Anwendung hinzugefügt habe fertig fertig startet es funktioniert aber wenn ich es später als Ergebnis der Benutzereingabe fügt es nicht – msaspence

+0

Boss! Sie haben mir das Leben gerettet, indem Sie mir eine Eigenschaft "autoresizesSubviews" mitgeteilt haben! Ich hatte ein Problem, das beim programmatischen Erstellen von Unteransichten auftrat, aber die Superview war auf dem Storyboard. "Die Issse war, dass die Subviews Autoresizing einstellen wollten, was mich auch nach richtiger Einstellung sehr ärgerte." +1 Daumen hoch! – Prasanna

0

Während die Antwort von klaaspeiter sinnvoll ist und in manchen Fällen die richtige Antwort sein kann in meinem speziellen Fall war es, weil ich eine Sub-View zu einer UINavigationController-Ansicht mit addSubview anstelle von pushViewController hinzufügte: view animated: NO;

+0

während dies ein Weg um das Problem ist, ist es kein Fix für, wenn Sie addSubview verwenden möchten, wie ich jetzt mache :( – msaspence