1.概述
- 很多软件都会存在在一个UIScrollView中有多个分页视图的情况,类是于系统桌面有不同页的视图,这时候苹果为了用户方便管理和标记当前视图,在UIKit框架中提供了这么一个控件来实现这个功能,即UIPageControl
- UIPageControl是分页控制控件,用来标示当前界面的视图总数和当前显示视图
2.基本使用
- (void)viewDidLoad {
[super viewDidLoad];
// 1.创建PageControl,添加到视图中
UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(250, 200, 100, 37)];
// 1.1设置pageControl的总页数和当前标记界面
pageControl.numberOfPages = 5;
pageControl.currentPage = 2;
// 1.2设置pageControl的颜色属性
// 设置当前页面标记颜色和其他页面的标记颜色
pageControl.pageIndicatorTintColor = [UIColor purpleColor];
pageControl.currentPageIndicatorTintColor = [UIColor yellowColor];
// 2.添加到视图
[self.view addSubview:pageControl];
// 3.添加监听事件
// 由于UIPageControl继承自UIControl,所以我们也可以像监听按钮一样给UIPageControl添加监听事件
[pageControl addTarget:self action:@selector(pageControlClick:) forControlEvents:UIControlEventValueChanged];
}
//监听方法实现
-(IBAction)pageControlClick:(UIPageControl *)sender{
NSLog(@"%lu",sender.currentPage);
}
3.通过KVC自定义UIPageControl
由于pageControl的样式只有默认值为小圆点,我们有时可能需要自定义样式,在Xcode7以前我们可以在声明文件中找到UIPageControl的两个私有属性,Xcode7中由于苹果加强了封装性,看不到这些私有属性了
UIImage* _currentPageImage;
UIImage* _pageImage;通过设置这两个属性可以自定义样式,但是对象的私有属性我们不能直接访问,这个时候我们可以通过KVC机制来访问和设置私有属性的值
// 设置当前页标的图片
[pageControl setValue:[UIImage imageNamed:@"current"] forKeyPath:@"_currentPageImage"];
// 设置其他页标的图片
[pageControl setValue:[UIImage imageNamed:@"other"] forKeyPath:@"_pageImage"];