自定义UIPageControl小点的颜色
2015-10-16 10:34
375 查看
方法一:继承UIPageController类,重写其方法。
首先导入两个封装好的文件,在这里我的文件叫做BluePageControl.h和BluePageControl.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 = [[QBluePageControlalloc] initWithFrame];并指定_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:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:pc];
[self pageChanged:pc];
}
-(void)pageChanged:(UIPageControl*)pc{
NSArray *subViews = pc.subviews;
for (int i = 0; i < [subViews count]; i++) {
UIView* subView = [subViews objectAtIndex:i];
if ([NSStringFromClass([subView class]) isEqualToString:NSStringFromClass([UIImageView class])]) {
((UIImageView*)subView).image = (pc.currentPage == i ? [UIImage imageNamed:@"RedPoint.png"] : [UIImage imageNamed:@"BluePoint.png"]);
}
}
}
首先导入两个封装好的文件,在这里我的文件叫做BluePageControl.h和BluePageControl.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 = [[QBluePageControlalloc] initWithFrame];并指定_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:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:pc];
[self pageChanged:pc];
}
-(void)pageChanged:(UIPageControl*)pc{
NSArray *subViews = pc.subviews;
for (int i = 0; i < [subViews count]; i++) {
UIView* subView = [subViews objectAtIndex:i];
if ([NSStringFromClass([subView class]) isEqualToString:NSStringFromClass([UIImageView class])]) {
((UIImageView*)subView).image = (pc.currentPage == i ? [UIImage imageNamed:@"RedPoint.png"] : [UIImage imageNamed:@"BluePoint.png"]);
}
}
}
相关文章推荐
- 实时显示iOS编写UI代码效果
- default parameter value for ‘color’ must be a compile-time constant
- Cocoa深入学习:NSOperationQueue、NSRunLoop和线程安全
- 第一天开通,记录下ueditor的大小设置
- 关于UITabar的一些自定义方法
- Android第三方模拟器使用:bluestracks和Genymotion
- UIWindow UIScreen UIViewController UIView之间的关系
- iOS 笔记八:Core Animation、Dynamic Animation、 UIDynamicBehavoir
- IOS学习动画一之 UIKit动画
- iOS UIView 添加点击事件
- UIDatePick,UIPick
- requireJS参数传递
- UIImage 和 NSString 之间的互转
- IOS之UITabBarController
- IOS does not contain bitcode. You must rebuild it with
- requirejs解决js跨域问题
- Storyboard里面的几种Segue区别及视图的切换:push,modal,popover,replace和custom
- 根据indexPath拿到UITableView的cell
- JS生成36为UUID
- requirejs学习笔记