更改UIPageViewController自己的PageController关于点的颜色

时间:2013-07-16 19:03:48

标签: objective-c xcode properties uipageviewcontroller

嘿我正在使用UIPageViewController来控制我在哪个页面以及滚动。我知道只需添加以下两个函数就可以显示页面控制器。

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController

我想知道的是,是否可以更改页面控制器的颜色,这样点在我正在使用的背景上更明显?

我知道常规页面控制器具有以下属性:

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

但是,我无法弄清楚如何从UIPageViewController访问这些属性或页面控制器。

如果有人刚刚说过如何更改属性,那可能会有所帮助吗?

3 个答案:

答案 0 :(得分:55)

您可以使用UIAppearance配置UIPageControl颜色。这也适用于UIPageViewControllers中的UIPageControls。

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

答案 1 :(得分:12)

如果您想更改特定UIPageViewController 的UIPageControl颜色,可以使用以下内容:

在Swift 3中

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

答案 2 :(得分:1)

UIPageControl符合UIAppearance协议。 The Apple Developper API Reference说明UIAppearance

  

使用UIAppearance协议获取类的外观代理。您可以通过将外观修改消息发送到类的外观代理来自定义类实例的外观。

因此,使用Swift 2.2,您可以在UIPageControlpageIndicatorTintColor的子类中设置currentPageIndicatorTintColor' UINavigationControllerAppDelegate课程(更全面的方法)。

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
    }

}