为ios中的每个分页点提供不同颜色的代码

是否有可能给每个分页点不同的颜色? 假设如果我有4个点的意思是可以给ios中的每个点4种不同的颜色?

http://muthesblog.blogspot.in/2011/11/custompagecontrol.html

通过在博客上面的代码,你会得到不同的颜色点,如下图所示的黄色矩形。

为了您的方便添加代码

custompagecontrol的实现

PageControl *<pageControl> = [[[PageControl alloc] initWithFrame:f] autorelease]; <pageControl>.numberOfPages = 5; <pageControl>.currentPage = 1; <pageControl>.delegate = self; [self.view addSubview:<pageControl>]; 

/// .h文件

 #import <UIKit/UIKit.h> @protocol PageControlDelegate; @interface PageControl : UIView { @private NSInteger _currentPage; NSInteger _numberOfPages; UIColor *dotColorCurrentPage; UIColor *dotColorOtherPage; NSObject<PageControlDelegate> *delegate; } // Set these to control the PageControl. @property (nonatomic) NSInteger currentPage; @property (nonatomic) NSInteger numberOfPages; // Customize these as well as the backgroundColor property. @property (nonatomic, retain) UIColor *dotColorCurrentPage; @property (nonatomic, retain) UIColor *dotColorOtherPage; // Optional delegate for callbacks when user taps a page dot. @property (nonatomic, assign) NSObject<PageControlDelegate> *delegate; @end @protocol PageControlDelegate<NSObject> @optional - (void)pageControlPageDidChange:(PageControl *)pageControl; @end 

//.m文件

 #import "PageControl.h" // Tweak these or make them dynamic. #define kDotDiameter 10.0 #define kDotSpacer 7.0 @implementation PageControl @synthesize dotColorCurrentPage; @synthesize dotColorOtherPage; @synthesize delegate; - (NSInteger)currentPage{ return _currentPage; } - (void)setCurrentPage:(NSInteger)page{ _currentPage = MIN(MAX(0, page), _numberOfPages-1); [self setNeedsDisplay]; } - (NSInteger)numberOfPages{ return _numberOfPages; } - (void)setNumberOfPages:(NSInteger)pages{ _numberOfPages = MAX(0, pages); _currentPage = MIN(MAX(0, _currentPage), _numberOfPages-1); [self setNeedsDisplay]; } - (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { // Default colors. self.backgroundColor = [UIColor clearColor]; self.dotColorCurrentPage = [UIColor greenColor]; self.dotColorOtherPage = [UIColor whiteColor]; } return self; } - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetAllowsAntialiasing(context, true); CGRect currentBounds = self.bounds; CGFloat dotsWidth = self.numberOfPages*kDotDiameter + MAX(0, self.numberOfPages-1)*kDotSpacer; CGFloat x = CGRectGetMidX(currentBounds)-dotsWidth/2; CGFloat y = CGRectGetMidY(currentBounds)-kDotDiameter/2; for (int i=0; i<_numberOfPages; i++) { CGRect circleRect = CGRectMake(x, y, kDotDiameter, kDotDiameter); if (i == _currentPage) { CGContextSetFillColorWithColor(context, self.dotColorCurrentPage.CGColor); } else { if(i==0) { CGContextSetFillColorWithColor(context, [UIColor magentaColor].CGColor); } else if(i==1) { CGContextSetFillColorWithColor(context, [UIColor orangeColor].CGColor); } else if (i==2) { CGContextSetFillColorWithColor(context, [UIColor yellowColor].CGColor); } else if (i==3) { CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor); } else if (i==4) { CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor); } } CGContextFillEllipseInRect(context, circleRect); x += kDotDiameter + kDotSpacer; } } - (void)dealloc { [dotColorCurrentPage release]; [dotColorOtherPage release]; [super dealloc]; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { if (!self.delegate) return; CGPoint touchPoint = [[[event touchesForView:self] anyObject] locationInView:self]; CGFloat dotSpanX = self.numberOfPages*(kDotDiameter + kDotSpacer); CGFloat dotSpanY = kDotDiameter + kDotSpacer; CGRect currentBounds = self.bounds; CGFloat x = touchPoint.x + dotSpanX/2 - CGRectGetMidX(currentBounds); CGFloat y = touchPoint.y + dotSpanY/2 - CGRectGetMidY(currentBounds); if ((x<0) || (x>dotSpanX) || (y<0) || (y>dotSpanY)) return; self.currentPage = floor(x/(kDotDiameter+kDotSpacer)); if ([self.delegate respondsToSelector:@selector(pageControlPageDidChange:)]) { [self.delegate pageControlPageDidChange:self]; } } @end 

在这里输入图像说明

由于iOS的限制,没有原生的方式来改变每个页面指示器的颜色。

但是,您可以使用以下代码更改当前所选指标的颜色,其余可能是一个很好的折中scheme。

 pageControl.pageIndicatorTintColor = [UIColor purpleColor]; pageControl.currentPageIndicatorTintColor = [UIColor magentaColor]; 

如果这个function对您的应用程序是必不可less的,我会build议创build一个自定义页面指示符,以满足您的目的,或者可以在线find允许您执行此操作的库。

我希望能回答你的问题:)

 Check this below code pageControl.pageIndicatorTintColor = [UIColor purpleColor]; pageControl.currentPageIndicatorTintColor = [UIColor magentaColor]; or Please refer this link http://stackoverflow.com/questions/2942636/how-can-i-change-the-color-of-pagination-dots-of-uipagecontrol