博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS自定义UIPageControl
阅读量:6509 次
发布时间:2019-06-24

本文共 2894 字,大约阅读时间需要 9 分钟。

写在前面

我就知道会有这一天,之前因为公司的APP弹窗的种类太多,不得不自己写一个弹窗类,为每一个弹窗类型设定一个类。现在也是因为分页符的类型太多,不得不自定义。网上的都不符合自己的需求,所以自己写了一个,贴出来,如果写的不好希望大家能给修改意见。

代码

.h文件

#import 
typedef enum : NSInteger{
    //自定义pagecontrol的类型     NKPageControlStyleA,     NKPageControlStyleB, }NKPageControlStyle; @interface NKPageControl : UIPageControl - (instancetype)initWithStyle:(NKPageControlStyle)pageControlStyle; @end 复制代码

.m文件

#import "NKPageControl.h" @interface NKPageControl () @property (nonatomic, assign) NKPageControlStyle style; @end @implementation NKPageControl -(instancetype) initWithStyle:(NKPageControlStyle)pageControlStyle {
    self = [super init];          //在这里获取到创建pageControl的种类     _style = pageControlStyle;          return self; } -(void) updateDots {
    if (_style == NKPageControlStyleA)     {
        //循环获取每一个小圆点(小圆点的类型是UIView)         for (int i = 0; i < self.subviews.count; i++)         {
            if (i == 0)             {
                //获取到一个小圆点                 UIView *dot = [self.subviews objectAtIndex:i];                 dot.backgroundColor = [UIColor clearColor];                 //创建imageView放在小圆点上                 UIImageView *imageView;                 if (dot.subviews.count == 0)                 {
                    imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, dot.frame.size.width, dot.frame.size.height)];                     [dot addSubview:imageView];                 }                 else                 {
                    imageView = dot.subviews.firstObject;                 }                 //判断小圆点是否是当前页面,根据不同状态设置不同图片                 if (i == self.currentPage)                 {
                    imageView.image = [UIImage imageNamed:@"page_main_selected"];                 }                 else                 {
                    imageView.image = [UIImage imageNamed:@"page_main"];                 }             }         }     }     else if (_style == NKPageControlStyleB)     {
        //自定义种类         } } -(void) setCurrentPage:(NSInteger)page {
    [super setCurrentPage:page];     //每次设置当前活动的小圆点时,重新配置图片     [self updateDots]; } 复制代码

使用

    _pageControl = [[NKPageControl alloc] initWithStyle:NKPageControlStyleA];     //常规设置     _pageControl.frame = CGRectMake(0 , 0, WIDTH_VIEW, 20);//小圆点控件的大小位置     _pageControl.numberOfPages = 4;//小圆点个数     _pageControl.currentPage = 0;     //配置颜色     //    _pageControl.pageIndicatorTintColor = [UIColor whiteColor];     //    _pageControl.currentPageIndicatorTintColor = [UIColor lightGrayColor];     _pageControl.userInteractionEnabled = NO;//关闭与  用户的交互     //添加导视图中     [self.view addSubview:_pageControl]; 复制代码

pageControl的图片类型一样

如果pageControl的图片类型一样的话,可以使用KVC设置图片,代码如下

[pageControl setValue:[UIImage imageNamed:@"image1"] forKeyPath:@"_pageImage"]; [pageControl setValue:[UIImage imageNamed:@"image2"] forKeyPath:@"_currentPageImage"]; 复制代码

转载地址:http://lebfo.baihongyu.com/

你可能感兴趣的文章
戴尔为保护数据安全 推出新款服务器PowerEdge T30
查看>>
今年以来硅晶圆涨幅约达40%
查看>>
构建智能的新一代网络——专访Mellanox市场部副总裁 Gilad Shainer
查看>>
《数字视频和高清:算法和接口》一导读
查看>>
《中国人工智能学会通讯》——6.6 实体消歧技术研究
查看>>
如何在Windows查看端口占用情况及查杀进程
查看>>
云存储应用Upthere获7700万美元股权债务融资
查看>>
国家互联网应急中心何世平博士主题演讲
查看>>
洗茶,你误会了多少年?
查看>>
贵阳高新区力争打造“千亿级大数据园区”
查看>>
安防众筹不止于卖产品 思维拓展刺激消费
查看>>
OpenSSH曝高危漏洞 会泄露私钥
查看>>
艾特网能获2016APCA用户满意品牌大奖
查看>>
《CCNP TSHOOT 300-135学习指南》——第2章 结构化故障检测与排除进程
查看>>
《Java EE 7精粹》—— 2.5 非阻塞I/O
查看>>
《Python数据科学实践指南》一2.2 字符串
查看>>
《R数据可视化手册》——1.1 安装包
查看>>
《iOS创意程序设计家》——导读
查看>>
spring-aop
查看>>
android RecycleView Adapter简单封装
查看>>