UIScrollView mit aktivierten Seiten und Änderungen der Gerätedrehung / Ausrichtung (MADNESS)

Ich bin eine harte Zeit haben, dieses Recht.

Habe ich eine UIScrollView, mit paging aktiviert. Es wird geführt von einem view controller (MainViewController) und jede Seite wird verwaltet von einem PageViewController, seine Ansicht als unteransicht der scrollView am entsprechenden offset. - Bildlauf nach Links und rechts für standard-Orientierung iPhone-app. Funktioniert gut. Im Grunde genau wie das Beispiel von Apple und wie auch das Wetter-app mit dem iPhone.

Jedoch, wenn ich versuche, Unterstützung von anderen Orientierungen, Dinge, die nicht sehr gut funktionieren. Ich habe unterstützt jede Orientierung in beiden MainViewController und PageViewController mit dieser Methode:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
     return YES;
}

Allerdings, wenn ich drehen Sie das Gerät, meine Seiten werden ziemlich verzerrt, und es gibt eine Menge von Zeichnung Pannen, vor allem, wenn nur einige der Seiten wurden geladen, dann habe ich drehen, dann scrollen mehr, etc... Sehr chaotisch.

Ich habe gesagt, dass meine Ansichten zur Unterstützung von auto-Größenänderung mit

 theView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

Aber ohne Erfolg. Es scheint nur dehnen und verzerren, meine Ansichten.

In meinem MainViewController, fügte ich diese Zeile in einem Versuch, die Größe von allen meinen Seiten Ansichten:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * ([self.viewControllers count]), self.scrollView.frame.size.height);

    for (int i = 0; i < [self.viewControllers count]; i++) {
        PageViewController *controller = [self.viewControllers objectAtIndex:i];
        if ((NSNull *)controller == [NSNull null])
            continue;

        NSLog(@"Changing frame: %d", i);
        CGRect frame = self.scrollView.frame;
        frame.origin.x = frame.size.width * i;
        frame.origin.y = 0;
        controller.view.frame = frame;
    }
}

Aber es hat nicht helfen zu viel (weil ich faul laden Sie die Aussicht, so dass nicht alle von Ihnen sind unbedingt geladen werden, wenn dieser ausgeführt wird).

Gibt es eine Möglichkeit, dieses problem zu lösen?

InformationsquelleAutor der Frage jbrennan | 2010-03-26

Schreibe einen Kommentar