2014-10-30 298 views
2

是否有可能为每个分页点使用不同的颜色?假设如果我有4个点意味着可以为ios中的每个点提供4种不同的颜色?为ios中的每个分页点提供不同颜色的代码

+0

不幸的是,你不能。 – 2014-10-30 09:18:49

+0

请使用分页中的静态或动态操作 – 2014-10-30 09:23:09

+0

您只能在自定义重新实现中执行此操作,而不能在标准控件中执行此操作。 – 2014-10-30 09:28:04

回答

0
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 
0

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

但是,您可以使用以下代码更改当前所选指标的颜色以及其他可能是妥协的指标。

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

如果这个功能对你的应用程序,我会建议创建服务你的目的也许找到一个图书馆网上,可以让你做到这一点的定制页指标至关重要。

我希望回答您的问题:)通过在博客上面的代码

1

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

你会得到不同的色点如下图所示的图像有黄色矩形。

为了您的方便添加代码

implemetation的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 

enter image description here

相关问题