diff --git a/SMPageControl.h b/SMPageControl.h index 530c404..60d8e1d 100755 --- a/SMPageControl.h +++ b/SMPageControl.h @@ -38,8 +38,11 @@ typedef NS_ENUM(NSUInteger, SMPageControlTapBehavior) { @property (nonatomic, strong) UIImage *pageIndicatorImage UI_APPEARANCE_SELECTOR; @property (nonatomic, strong) UIImage *pageIndicatorMaskImage UI_APPEARANCE_SELECTOR; // ignored if pageIndicatorImage is set @property (nonatomic, strong) UIColor *pageIndicatorTintColor UI_APPEARANCE_SELECTOR; // ignored if pageIndicatorImage is set +@property (nonatomic, strong) UIColor *pageIndicatorTintStrokeColor UI_APPEARANCE_SELECTOR; // ignored if pageIndicatorImage is set + @property (nonatomic, strong) UIImage *currentPageIndicatorImage UI_APPEARANCE_SELECTOR; @property (nonatomic, strong) UIColor *currentPageIndicatorTintColor UI_APPEARANCE_SELECTOR; // ignored if currentPageIndicatorImage is set +@property (nonatomic, strong) UIColor *currentPageIndicatorTintStrokeColor UI_APPEARANCE_SELECTOR; // ignored if currentPageIndicatorImage is set @property (nonatomic) BOOL hidesForSinglePage; // hide the the indicator if there is only one page. default is NO @property (nonatomic) BOOL defersCurrentPageDisplay; // if set, clicking to a new page won't update the currently displayed page until -updateCurrentPageDisplay is called. default is NO diff --git a/SMPageControl.m b/SMPageControl.m index b0eb1fa..75e5991 100755 --- a/SMPageControl.m +++ b/SMPageControl.m @@ -146,6 +146,7 @@ - (void)_renderPages:(CGContextRef)context rect:(CGRect)rect CGFloat xOffset = left; CGFloat yOffset = 0.0f; UIColor *fillColor = nil; + UIColor *strokeColor = nil; UIImage *image = nil; CGImageRef maskingImage = nil; CGSize maskSize = CGSizeZero; @@ -155,12 +156,14 @@ - (void)_renderPages:(CGContextRef)context rect:(CGRect)rect if (i == _displayedPage) { fillColor = _currentPageIndicatorTintColor ? _currentPageIndicatorTintColor : [UIColor whiteColor]; + strokeColor = _currentPageIndicatorTintStrokeColor; image = _currentPageImages[indexNumber]; if (nil == image) { image = _currentPageIndicatorImage; } } else { fillColor = _pageIndicatorTintColor ? _pageIndicatorTintColor : [[UIColor whiteColor] colorWithAlphaComponent:0.3f]; + strokeColor = _pageIndicatorTintStrokeColor; image = _pageImages[indexNumber]; if (nil == image) { image = _pageIndicatorImage; @@ -180,7 +183,8 @@ - (void)_renderPages:(CGContextRef)context rect:(CGRect)rect } } - [fillColor set]; + [fillColor setFill]; + if (strokeColor) [strokeColor setStroke]; CGRect indicatorRect; if (image) { yOffset = [self _topOffsetForHeight:image.size.height rect:rect]; @@ -197,6 +201,9 @@ - (void)_renderPages:(CGContextRef)context rect:(CGRect)rect CGFloat centeredXOffset = xOffset + floorf((_measuredIndicatorWidth - _indicatorDiameter) / 2.0f); indicatorRect = CGRectMake(centeredXOffset, yOffset, _indicatorDiameter, _indicatorDiameter); CGContextFillEllipseInRect(context, indicatorRect); + if (strokeColor) { + CGContextStrokeEllipseInRect(context, indicatorRect); + } } [pageRects addObject:[NSValue valueWithCGRect:indicatorRect]]; @@ -404,6 +411,7 @@ - (void)setStyleWithDefaults:(SMPageControlStyleDefaults)defaultStyle self.indicatorDiameter = DEFAULT_INDICATOR_WIDTH_LARGE; self.indicatorMargin = DEFAULT_INDICATOR_MARGIN_LARGE; self.pageIndicatorTintColor = [[UIColor whiteColor] colorWithAlphaComponent:0.2f]; + self.pageIndicatorTintStrokeColor = nil; self.minHeight = DEFAULT_MIN_HEIGHT_LARGE; break; case SMPageControlDefaultStyleClassic: @@ -411,6 +419,7 @@ - (void)setStyleWithDefaults:(SMPageControlStyleDefaults)defaultStyle self.indicatorDiameter = DEFAULT_INDICATOR_WIDTH; self.indicatorMargin = DEFAULT_INDICATOR_MARGIN; self.pageIndicatorTintColor = [[UIColor whiteColor] colorWithAlphaComponent:0.3f]; + self.pageIndicatorTintStrokeColor = nil; self.minHeight = DEFAULT_MIN_HEIGHT; break; }