嘿我正在使用UIPageViewController来控制我在哪个页面以及滚动。我知道只需添加以下两个函数就可以显示页面控制器。
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
我想知道的是,是否可以更改页面控制器的颜色,这样点在我正在使用的背景上更明显?
我知道常规页面控制器具有以下属性:
@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor
@property(nonatomic,retain) UIColor *pageIndicatorTintColor
但是,我无法弄清楚如何从UIPageViewController访问这些属性或页面控制器。
如果有人刚刚说过如何更改属性,那可能会有所帮助吗?
答案 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,您可以在UIPageControl
或pageIndicatorTintColor
的子类中设置currentPageIndicatorTintColor
' UINavigationController
和AppDelegate
课程(更全面的方法)。
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
}
}