iOS 自定义UIpageControl

来源:互联网 发布:加工中心电脑编程兼职 编辑:程序博客网 时间:2024/05/18 01:59
方法一:继承UIPageControll类,重写其方法。

首先导入两个封装好的文件,在这里我的文件叫做BluePageControl.hBluePageControl.m,继承于UIPageControl,重写了以下的方法。

 BluePageControl.h

#import ;

@interface QBluePageControl: UIPageControl

{

UIImage *_activeImage;(蓝色圆点图片)

UIImage *_inactiveImage;(白色圆点图片)

}

 

@end

 

BluePageControl.m


#import"QBluePageControl.h"

 

@implementation QBluePageControl


- (id)initWithFrame:(CGRect)frame

{

self =[superinitWithFrame:frame];

_activeImage =[UIImageimageNamed:@"channel_pagecontrol_bluedot.png"];

_inactiveImage =[UIImageimageNamed:@"channel_pagecontrol_whitedot.png"];

 return self;

}

 

- (void)updateDots

{

for (inti= 0;i< [self.subviewscount]; i++) {

UIImageView* dot = [self.subviewsobjectAtIndex:i];

 

if (i== self.currentPage){

dot.image _activeImage;

       }

else

dot.image _inactiveImage;

   }

}

 

- (void)setCurrentPage:(NSInteger)currentPage

{

   [supersetCurrentPage:currentPage];

   [selfupdateDots];

}

@end

 

使用的时候在主程序中#import "QBluePageControl.h"

创建:_pageControl =[[QBluePageControlallocinitWithFrame];并指定_pageControl的numberOfPages和currentPage就可以实现了。

 UIPageControl* pc = [[[QBluePageControlalloc alloc]initWithFrame:CGRectMake(100, 400, 120, 27)] autorelease];

    pc.numberOfPages = 3;

    pc.currentPage = 0;

方法二:

-(void)viewDidLoad{

    [super viewDidLoad];

    UIPageControl* pc =[[[UIPageControl alloc] initWithFrame:CGRectMake(100, 400, 120,27)] autorelease];

    pc.numberOfPages = 3;

    pc.currentPage = 0;

    [pc addTarget:selfaction:@selector(pageChanged:)forControlEvents:UIControlEventValueChanged];

    [self.viewaddSubview:pc];

    [self pageChanged:pc];

}

-(void)pageChanged:(UIPageControl*)pc{

    NSArray *subViews =pc.subviews;

    for (int i = 0; i <[subViews count]; i++) {

       UIView* subView = [subViewsobjectAtIndex:i];

       if ([NSStringFromClass([subView class])isEqualToString:NSStringFromClass([UIImageView class])]) {

          ((UIImageView*)subView).image = (pc.currentPage == i ? [UIImageimageNamed:@"RedPoint.png"] : [UIImageimageNamed:@"BluePoint.png"]);

       }

       

    }

 

}

0 0