2014-01-23 6 views
7

Ich möchte UIPageViewController verwenden, um durch meine Datenquelle paginieren. Im Prinzip funktioniert es, aber ich bekomme die Punkte nicht als Hinweis darauf, auf welcher Seite ich bin.Seitenanzeige fehlt in UIPageViewController

Jemand hat diese Frage vorher gestellt und ich habe genau was the answer vorgeschlagen. Allerdings bekomme ich immer noch keine Punkte am unteren Bildschirmrand.

Im Wesentlichen verwende ich UIPageViewControllerTransitionStyleScroll und Navigationsausrichtung ist UIPageViewControllerNavigationOrientationHorizontal.

Ich habe eine sample project auf GitHub erstellt, um das Problem zu demonstrieren.

Wenn jemand so nett wäre und helfen.

Antwort

19

Aktualisierung: Bitte beachten Sie die Antwort von @Senseful unten. Es ist gegenüber diesem bevorzugt.

Ursprüngliche Antwort: überprüfte ich das Projekt aus, und der Grund, warum Sie nicht die UIPageController (die Punkte) sehen kann, ist, weil seine Standardfarbe weiß ist, und die UIPageViewController ‚s Ansicht der Superview ist weiß. Um dies zu lösen, könnten Sie die Hintergrundfarbe ändern oder die Farbe des UIPageController ändern.

Um die Hintergrundfarbe in eine nicht-weiße Farbe zu ändern, legen Sie in -viewDidLoad: in FTAdviceViewController.m die Hintergrundfarbe der Ansicht fest, die die Ansicht UIPageViewController enthält.

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor redColor]; 
    ... 
} 

Um die Farbe der Punkte zu ändern, die UIPageViewController ‚s UIPageControl subview erhalten, nachdem Sie die UIPageViewController erstellt haben. Sie können dann die Eigenschaften pageIndicatorTintColor, currentPageIndicatorTintColor und backgroundColor ändern.

- (void)viewDidLoad 
{ 
    ... 
    // after creating the UIPageViewController 
    for (UIView *subview in self.pageController.view.subviews) { 
     if ([subview isKindOfClass:[UIPageControl class]]) { 
      UIPageControl *pageControl = (UIPageControl *)subview; 
      pageControl.pageIndicatorTintColor = [UIColor yellowColor]; 
      pageControl.currentPageIndicatorTintColor = [UIColor greenColor]; 
      pageControl.backgroundColor = [UIColor blueColor]; 
     } 
    } 
} 
+0

Dank Joseph. Ich habe nicht erwartet, dass es in weißer Farbe ist. Wenn man bedenkt, dass iOS 7 standardmäßig weiß mit Blautönung ist, ist es verrückt, dass sie die weiße Farbe für "UIPageControl" gewählt haben. – Houman

+1

Mein Vergnügen :) Das hatte mich auch verblüfft, als ich es zum ersten Mal gesehen habe. –

+0

Danke, es hilft mir auch. –

38

Eine weitere Möglichkeit, dieses Problem zu beheben ist zu customize the page control's tint colors:

UIPageControl *pageControlAppearance = [UIPageControl appearanceWhenContainedIn:[UIPageViewController class], nil]; 
pageControlAppearance.pageIndicatorTintColor = [UIColor lightGrayColor]; 
pageControlAppearance.currentPageIndicatorTintColor = [UIColor darkGrayColor]; 
+3

Scheint eine bessere Lösung als angenommene Antwort zu sein, thx – KIDdAe

+0

danke für die Verknüpfung der detaillierten Diskussionsseite –