UIView addsubview nach der Ausrichtung ändern: Sagen Sie Ansicht, um die Größe

Ich habe eine UIView eine XIB-in den Portrait-Modus.

Diese Ansicht programmgesteuert Hinzugefügt, um die viewcontroller wie diese:

NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"InputView" owner:self options:nil];
    InputView *inputView = (InputView*)[nibObjects objectAtIndex:0];
    [self.view addSubview:inputView];

Diese Ansicht hat autoresizing Masken richtig eingestellt, und dreht fein, wenn sich die Ausrichtung ändert sich von Porträt zu Landschaft.

Jedoch, wenn die Orientierung ist bereits Landschaft und ich eine Ansicht erstellen nach die änderung der Ausrichtung, es hat seine ursprüngliche hochformat.

Gibt es eine Möglichkeit zu sagen, die Ansicht zu initialisieren oder ändern Sie die Größe selbst-Porträt, indem es seine Masken?

Vielen Dank im Voraus für jede Antwort!

BEARBEITEN:
Über die Vorschläge von occulus und Inder Kumar Rathore (danke Jungs!), Ich veränderte den code zu diesem:

InputView *inputView = (InputView*)[nibObjects objectAtIndex:0];
[self.view addSubview:inputView];
[self.view setNeedsLayout];
[self.view layoutSubviews];
[self.view layoutIfNeeded];
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
[self shouldAutorotateToInterfaceOrientation:orientation];

Leider gibt es überhaupt keine Veränderung.
Ich denke, dass ich jemanden gefunden, Fragen sich die gleiche Frage:

Beim hinzufügen eines sub-Ansicht in der Ansicht nicht verkleinern, wenn die app im landscape-Modus

Die Antwort das problem identifiziert, korrekt, aber nicht sehr ermutigend...
Sicher, ich könnte zwei Kerne oder die Größe des Rahmens ändern, aber das scheint so im Widerspruch zu der Idee des auto-Größenänderung.
Ich finde es schwer zu glauben, dass es keine Möglichkeit zu sagen, eine Feder nach dem Erwachen und hinzufügen zu einer Ansicht mit seinen autoresize Funktionen...etwas, das einwandfrei arbeitet, wenn das Gerät dreht.

EDIT 2:

Die Lösung des idz arbeitet:

InputView *inputView = (InputView*)[nibObjects objectAtIndex:0];
[self.view addSubview:inputView];
inputView.frame = self.view.bounds;
[inputView show];

Dank!

  • Ich hatte dieses problem, mit zwei Falten: (1) ich war mit einem kontrollierten Blick, der nib geladen UIVC; & (2) es zeigte nur unter iOS 4.3 nicht 5.0. yasirmturk Methode fixiert es für mich.
InformationsquelleAutor marimba | 2011-05-13
Schreibe einen Kommentar