2010-06-15 18 views
7

Ich habe eine kleine UIView, die immer in der Mitte des Bildschirms erscheinen sollte. Dies funktioniert hervorragend im Hochformat, nicht jedoch im Querformat.Immer zentrieren UIView

Um die UIView zeichne ich verwenden:

myView.frame = CGRectMake((visibleArea.size.width - MY_VIEW_WIDTH)/2, (visibleArea.size.height - MY_VIEW_HEIGHT)/2, MY_VIEW_WIDTH, MY_VIEW_HEIGHT); 
myView.autoresizingMask = (
          UIViewAutoresizingFlexibleTopMargin | 
          UIViewAutoresizingFlexibleBottomMargin | 
          UIViewAutoresizingFlexibleLeftMargin | 
          UIViewAutoresizingFlexibleRightMargin 
          ); 

Irgendwelche Ideen, was fehlt könnte?

Antwort

21

Warum nicht versuchen,

myView.center = controller.view.center

+0

Das funktioniert für mich jedes Mal. – Kyle

+1

Danke für die Antwort, obwohl ich persönlich gerne wissen möchte, warum der Code des Posters nicht wie erwartet funktioniert ... –

1

Vielleicht ändern Sie nicht die Ausrichtung der Statusleiste. Wenn Sie dies nicht tun, denkt das Gerät, dass die Ausrichtung immer noch im Hochformat und nicht im Querformat erfolgt.

+0

Ich habe nicht die Statusleiste berührt und es ändert tatsächlich die Position, wenn ich die Schnittstelle drehen. Die Sache ist, dass egal in welchem ​​Modus die Schnittstelle ist, Sie immer die Grenzen des Hochformat-Modus bekommen, wenn Sie nach [[UIScreen mainScreen] Schranken] fragen. Dies ist offensichtlich nicht nützlich, wenn der Benutzer die App im Querformat startet. Abgesehen davon, dass das Autorisieren von etwas verwirrt zu sein scheint. –

+0

Mmmm, versuche den Frame mit [[UIScreen mainScreen] ApplicationFrame] zu bekommen. Ich bin mir nicht sicher, ob sich dieser Rahmen mit der Ausrichtung ändert, aber wenn Sie es nicht tun, nehmen Sie die Ausrichtung des Geräts und, wenn es in der Landschaft ist, ändern Sie die Breite und Höhe. – emenegro

+0

es ist das gleiche mit Rahmen –

2

ist die App automatisch rotierenden?

Ich meine, wie sieht Ihre -[UIViewController shouldAutorotateToInterfaceOrientation:] Methode aus? Haben Sie eine anfängliche und unterstützte Ausrichtung in Ihrer Info.plist-Datei?

Überprüfen Sie auch die Ansicht der Eltern autoresizesSubviews Eigentum.

1

Ich erstellte eine Eigenschaft, um mir die Grenzen zu geben, basierend auf der Ausrichtung des Geräts. (Dies ist in einer Kategorie auf UIScreen.)

+0

Macht das tatsächlich irgendwas? Es gibt immer den gleichen Wert zurück ... –