UIScrollView + ändern Sie die Ausrichtung = Durcheinander Untersichten (iPad)

Ich möchte an einem UIScrollView als mein Haupt-container in der app, die es mir ermöglicht, streichen Sie hin und her zwischen den Untersichten. Um dies zu erreichen, habe ich eine UIViewController Unterklasse mit einer UIScrollView IBOutlet:

In der viewDidLoad Methode Baue ich den sub-Seiten:

for (int i= 0; i< pageCount; i++)
{
   CGRect frame = self.scrollView.frame;
   frame.origin.x = frame.size.width * i;
   frame.origin.y = 0;

   UIWebView* aWebView= [[UIWebView alloc] initWithFrame:frame];

   [self.scrollView addSubview:aWebView];
}

Beim Start der app (portrait-Modus), funktioniert alles. Das heißt, die UIWebViews sind, layed out Seite an Seite mit den richtigen Maßen, und ich kann swipe zwischen Ihnen hin und her.

Wenn ich drehen, um die Landschaft, es scheint, dass weder der scrollview Größe noch die Untersichten angepasst werden.

Ich weiß nicht, was ich tun sollte, um die Größe der Untersichten und die scrollview selbst, oder an welcher Stelle im code soll ich alles tun, und ich kann nicht scheinen zu finden, die Beispiele für diese.

Jemand wissen, was zu tun ist?

[edit] Versuch, passen Sie Größen wie vorgeschlagen von mahboudz:

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

   for (int i= 0; i< pageCount; i++)
   {
      CGRect frame = self.scrollView.frame;
      frame.origin.x = frame.size.width * i;
      frame.origin.y = 0;

      UIWebView* view= [[self.scrollView subviews] objectAtIndex:i];

      view.frame= frame;
   }
}

Diese Art von macht, was ich will, hat aber die folgenden Probleme:

1) kann man sehen, die Untersichten wachsen, um die richtige Display-Größe bei einer änderung der Orientierung

2) wenn die aktuelle Seite ist, zum Beispiel, Seite 2 von 5 Seiten, wird die Seite nicht vollständig sichtbar, nachdem die Ausrichtung geändert wurde, aber ist off-screen von 40 Pixel

3), bekomme ich komische Effekte, je nachdem, ob die app gestartet wird im portrait-oder landscape-Modus (simulator), ill versuchen zu erklären:

Wenn die app gestartet wird in den portrait-Modus:

  • Die Form/Rahmen der Untersichten sieht Durcheinander/offscreen, siehe screenshots:

http://i53.tinypic.com/21jr76x.png

  • wenn ich drehen, um die Landschaft, alles sieht okay aus, scrollen funktioniert hervorragend. auch wenn ich wieder zurück drehen auf hochformat, alles Super jetzt:

http://i55.tinypic.com/if3iiw.png

Wenn die app launchend im landscape-Modus:

  • Bekomme ich die gleiche Durcheinander/offscreen glitches als im portrait-Modus
  • Hin-und herschalten zwischen hoch-und Querformat behebt dieses für landscape-Modus
  • ABER: Portrait-Modus werden die Untersichten mit der Breite des landscape-Modus, so Untersichten sind zu breit

Ich zu beheben versucht 1) zu tun, der code oben in willRotateToInterfaceOrientation aber es komplett versaut das layout.

Ich behoben 2), indem Sie den folgenden code, um didRotateFromInterfaceOrientation:

//update the scroll view to the appropriate page

CGRect frame = self.scrollView.frame;
frame.origin.x = frame.size.width * self.currentPage;
frame.origin.y = 0;

[self.scrollView scrollRectToVisible:frame animated:NO];

Hinweis: die aktuelle Seite wird bestimmt in scrollViewDidScroll

Ich habe keine Ahnung, wie zu beheben 3)

InformationsquelleAutor user944943 | 2011-09-28

Schreibe einen Kommentar