2013-07-16 2 views
16

Hey Ich benutze einen UIPageViewController, um zu steuern, welche Seite ich bin und zum Scrollen. Ich weiß, dass es möglich ist, einen Page Controller zu zeigen, indem einfach die folgenden zwei Funktionen hinzugefügt werden.Ändern UIPageViewController eigene PageController in Bezug auf die Farbe der Punkte

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController 

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController 

Was ich wissen will, ist, wenn es möglich ist, die Farbe der Seite Controller zu ändern, so dass die Punkte sind besser sichtbar auf dem Hintergrund ich benutze?

Ich kenne eine regelmäßige Seite Controller die Eigenschaften hat:

@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor 
@property(nonatomic,retain) UIColor *pageIndicatorTintColor 

Allerdings habe ich nicht für das Leben von mir herausfinden, wie für diese Angelegenheit von UIPageViewController diese Eigenschaften oder die Seite-Controller zuzugreifen.

Es könnte hilfreich sein, wenn jemand nur gesagt hat, wie man die Eigenschaften im Allgemeinen ändert?

Antwort

51

Sie können UIAppearance zum Konfigurieren von UIPageControl-Farben verwenden. Dies gilt auch für UIPageControls in UIPageViewControllern.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    UIPageControl *pageControl = [UIPageControl appearance]; 
    pageControl.pageIndicatorTintColor = [UIColor whiteColor]; 
    pageControl.currentPageIndicatorTintColor = [UIColor redColor]; 
} 
+1

Dank, das hat super funktioniert! – Lightbarrier

+3

+1 Dies sollte mehr Aufrufe und Abstimmungen haben. Es ist perfekt! –

+0

Hallo, für TintColor funktioniert es. Können Sie mir sagen, wie ich die Höhe von UIPageControl reduzieren kann (Ich habe 'pageControl.frame = CGRectMake (self.viewController.view.bounds.origin.x, self.viewController.view.bounds.origin.y + 352, self.viewController .view.bounds.size.width, 10); ') –

1

UIPageControl entspricht UIAppearance Protokoll. The Apple Developper API Reference Staaten über UIAppearance:

Verwenden Sie das UIAppearance Protokoll das Aussehen Proxy für eine Klasse zu erhalten. Sie können die Darstellung von Instanzen einer Klasse anpassen, indem Sie Nachrichten zum Anzeigen von Änderungen an den Darstellungs-Proxy der Klasse senden.


daher mit Swift 2.2, können Sie UIPageControl Set ‚s pageIndicatorTintColor und currentPageIndicatorTintColor in einer Unterklasse von UINavigationController oder in Ihrer AppDelegate Klasse (für einen globalen Ansatz).

CustomNavigationController.swift:

class CustomNavigationController: UINavigationController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Set pageIndicatorTintColor and currentPageIndicatorTintColor 
     // only for the following stack of UIViewControllers 
     let pageControl = UIPageControl.appearance() 
     pageControl.pageIndicatorTintColor = UIColor.blueColor() 
     pageControl.currentPageIndicatorTintColor = UIColor.greenColor() 
    } 

} 

AppDelegate.Swift:

class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

     // Set pageIndicatorTintColor and currentPageIndicatorTintColor globally 
     let pageControl = UIPageControl.appearance() 
     pageControl.pageIndicatorTintColor = UIColor.blueColor() 
     pageControl.currentPageIndicatorTintColor = UIColor.greenColor() 

     return true 
    } 

} 
7

Wenn Sie möchten die Farben des UIPageControl ändern für eine spezifischen UIPageViewController, können Sie mit dem folgende:

In Swift 3

let pageControl: UIPageControl = UIPageControl.appearance(whenContainedInInstancesOf: [MyPageViewController.self]) 
pageControl.pageIndicatorTintColor = UIColor.green 
// ... any other changes to pageControl 
Verwandte Themen