CGRect Positionierung entsprechend Mittelpunkt

Ich versuche, erstellen Sie mehrere Ansichten für eine iPad-app. Zuerst erstellte ich ein Menü anzeigen und dann ein sub-Menü anzeigen, mit Koordinaten laut Menü. Also es sieht wie folgt aus:

CGRect Positionierung entsprechend Mittelpunkt

Was ich getan habe:

self.view = [[UIView alloc] initWithFrame:CGRectMake(self.parentViewController.view.frame.size.width, 0, 150, screenHeight)];

Aber jetzt auf sub-Menü, die ich versuche zu schaffen, die Inhalte-Ansicht, die einen UINavigationController. Sie versuchen, das gleiche zu tun, bekomme ich dieses Ergebnis:

CGRect Positionierung entsprechend Mittelpunkt

Was ich Tue (dieses mal den Rahmen zu schaffen, die auf sub-menu-view-controller):

CGRect frame = CGRectMake(self.view.frame.origin.x + self.view.frame.size.width,
                            0,
                            [[UIScreen mainScreen] bounds].size.width - self.view.frame.origin.x - self.view.frame.size.width,
                            [[UIScreen mainScreen] bounds].size.height);

Es ist ziemlich selbsterklärend, aber ich bekomme nur die sub-Menü-Ursprung und fügen Sie deren Breite, so bekomme ich den rechten Rand zu koordinieren.

Nach vielen versuchen habe ich es geschafft, es funktioniert, weil ich bemerkte, dass die CGRectMake ist mit der Mitte des UINavigationController Blick auf dessen position. Also der folgende code:

CGRect frame = CGRectMake(self.view.frame.origin.x + self.view.frame.size.width + 259,
                            0,
                            [[UIScreen mainScreen] bounds].size.width - self.view.frame.origin.x - self.view.frame.size.width,
                            [[UIScreen mainScreen] bounds].size.height);

Ergibt die richtige position.

Was ist Los? Ich dachte CGRectMake Herkunft immer oben Links, aber diese besonders-Ansicht ist tatsächlich oben in der Mitte (oder in der Mitte-Mitte nicht sicher.) Was mache ich falsch?

EDIT1:

Hier ist die Ausgabe der Konsole für den Rahmen mit rechts position:

CGRect Positionierung entsprechend Mittelpunkt

Beachten Sie, wie die nav-Leiste ist nun richtig positioniert:

CGRect Positionierung entsprechend Mittelpunkt

Aber die x-coord ist nicht 250 (wie es sein sollte, weil-Menü.Breite + sub-Menü.Breite = 250.)

EDIT2:

Ich schließlich aufgegeben. Das problem mit dem automatisch generierten UINavigationBar, die erstellt wird, von der UINavigationViewController. Ich kann nicht scheinen, um herauszufinden, wie es zu konfigurieren. Ich bin gonna lassen die Frage offen, falls jemand die Antwort kennt.

nun, es hängt davon ab, in welcher Ansicht Sie verwenden. Der Ursprung ist technisch immer oben Links in einem UI-element-Objekts. Wenn Sie können sagen, dass eine weitere UIView-Objekt als Ihre Untersicht, dann sind Sie gehen zu müssen, um Platz für die Untersicht scheint. Es scheint zu beginnen in der Mitte des selbst.Ansicht, aber das ist, weil es wird beginnend bei (0,0) wie in der regulären selbst.view Hoffe, das hilft
Dieses kann dir helfen : stackoverflow.com/questions/6784823/...
stackoverflow.com/questions/11251988/...
Gut, Sie haben zu verstehen, was die frame, was ist die view-Hierarchie (frame ist relativ zur oberen linken Ecke des superview) und wahrscheinlich auch autoresizing Masken. CGRect ist nur eine Gruppe von vier zahlen, sonst nichts. Die wichtige Sache ist, wie es ist, interpretiert das layout der view-Mechanismus.
gut, dass die navigation bar wird angelegt 'automatisch', ich alloc ' D und initiiert eine leere Ansicht mit Rahmen. Das ist, warum? Sollte ich eine Ansicht erstellen, die nur richtig richten Sie die nav bar?

InformationsquelleAutor dccarmo | 2013-08-12

Schreibe einen Kommentar