2013-07-16 11 views
16

Hey sto usando un UIPageViewController per controllare quale pagina io sono su e per lo scorrimento. So che è possibile mostrare un controller di pagina insieme semplicemente aggiungendo le seguenti due funzioni.Modifica UIPageViewController proprio PageController per quanto riguarda colori di Dots

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController 

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController 

Quello che voglio sapere è se è possibile cambiare il colore del controller pagina, in modo che i punti sono più visibili sullo sfondo che sto utilizzando?

so un controller normale pagina ha le proprietà:

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

Tuttavia, non riesco a capire per la vita di me come accedere a queste proprietà o la pagina Controller per quella materia da UIPageViewController.

Potrebbe essere utile, se qualcuno ha appena detto come modificare le proprietà in generale?

risposta

51

È possibile utilizzare UIAppearance per configurare i colori UIPageControl. Questo vale anche per UIPageControls in UIPageViewControllers.

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

Grazie che funzionava benissimo! – Lightbarrier

+3

+1 Questo dovrebbe avere più visualizzazioni e voti positivi. È perfetto! –

+0

Ciao, per tintColor è funzionante. potresti dirmi come ridurre l'altezza di UIPageControl (ho provato 'pageControl.frame = CGRectMake (self.viewController.view.bounds.origin.x, self.viewController.view.bound.origin.y + 352, self.viewController .view.bounds.size.width, 10); ') –

1

UIPageControl conforme alle UIAppearance protocollo. The Apple Developper API Reference Uniti circa UIAppearance:

Utilizzare il protocollo UIAppearance per ottenere il proxy aspetto per una classe. È possibile personalizzare l'aspetto delle istanze di una classe inviando messaggi di modifica dell'aspetto al proxy di aspetto della classe.


Pertanto, utilizzando Swift 2.2, è possibile impostare UIPageControl s' pageIndicatorTintColor e currentPageIndicatorTintColor in una sottoclasse di UINavigationController o nella classe AppDelegate (per un approccio più globale).

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

Se si desidera modificare i colori del UIPageControl per una specifica UIPageViewController, è possibile utilizzare il successivi:

In Swift 3

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