2010-12-24 6 views
0

Nachdem die Ansicht geladen wurde, änderte ich die Ausrichtung in Querformat. Dort sehe ich einen blauen Streifen und der Blick wird nach unten bewegt. Wenn ich zu anderen Tabs gehe und zurückkomme, funktioniert es gut.Warum funktioniert die Autoresizing-Funktion bei der ersten Orientierung nicht?

Kann mir jemand dabei helfen?

Ich habe dies getan, um die Ansicht zu autosize:

-viewDidLoad: 
{ 
self.view.autoresizingMask =(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleRightMargin); 
self.view.autoresizesSubviews; 
[super viewDidLoad]; 
} 
-shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 

return YES; 
} 

Hier ein Screenshot ist:

alt text

Antwort

0

Ich glaube, vor dem automatischen viewDidLoad ausgelöst wird, ist das Verhalten nicht unbedingt gut definiert . Sehen Sie, ob Sie Ihre Autorisierungsmaskenoption in der Initialisierungsphase hinzufügen können (oder sogar in Interface Builder, wenn Sie die Ansicht von einer Spitze laden). Alles in allem sind hier viel mehr Informationen nötig - aber bedenken Sie, dass ein Großteil der Dinge bereits in "viewDidLoad" gespeichert wurde (nachdem sie bereits geladen wurde und bereit ist, sie zu verwenden).

+0

Ich versuchte in-init-Methode ..... es funktioniert nicht .... In einem anderen Beispiel habe ich eine Ansicht erstellt, naviagtionbar und hinzugefügt (als Unteransicht) zu self.view. und setze die autoresizingmaske in init methos. wenn es sich um den gleichen Fall handelt. Die Ansicht erscheint 2 cm unter der Statusleiste zum ersten Mal. Wenn sie von einem anderen Tab zurückkam, war das von unterhalb der Statusleiste, dh funktionierte gut. –

+0

Vielleicht sehen Sie, ob Sie mit ViewDidLoad den Parameter self.frame an der richtigen Stelle ändern können. Sie sollten in der Lage sein, die Größe des Fensters richtig zu bestimmen. Letztendlich, wenn Sie den Interface Builder verwenden, sollten Sie alle Probleme beheben, indem Sie die richtige Autorisierung einstellen. Ich setze Autoresierungsmasken immer nur manuell ein, wenn ich das Objekt von Grund auf neu anlege (in diesem Fall wird es vor dem Aufruf von addSubview gesetzt) –

Verwandte Themen