Skip to content

Commit

Permalink
Support for default style changes in iOS 7.
Browse files Browse the repository at this point in the history
  • Loading branch information
jerryhjones committed Sep 3, 2013
1 parent 15849ff commit c54d6ca
Showing 1 changed file with 33 additions and 4 deletions.
37 changes: 33 additions & 4 deletions SMPageControl.m
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@

#define DEFAULT_INDICATOR_WIDTH 6.0f
#define DEFAULT_INDICATOR_MARGIN 10.0f

#define DEFAULT_INDICATOR_WIDTH_LARGE 7.0f
#define DEFAULT_INDICATOR_MARGIN_LARGE 9.0f

#define MIN_HEIGHT 36.0f

typedef NS_ENUM(NSUInteger, SMPageControlImageType) {
Expand All @@ -23,6 +27,11 @@ typedef NS_ENUM(NSUInteger, SMPageControlImageType) {
SMPageControlImageTypeMask
};

typedef NS_ENUM(NSUInteger, SMPageControlStyleDefaults) {
SMPageControlDefaultStyleClassic = 0,
SMPageControlDefaultStyleModern
};

@interface SMPageControl ()
@property (strong, readonly, nonatomic) NSMutableDictionary *pageNames;
@property (strong, readonly, nonatomic) NSMutableDictionary *pageImages;
Expand Down Expand Up @@ -58,10 +67,13 @@ - (void)_initialize
_tapBehavior = SMPageControlTapBehaviorStep;

self.backgroundColor = [UIColor clearColor];
_measuredIndicatorWidth = DEFAULT_INDICATOR_WIDTH;
_measuredIndicatorHeight = DEFAULT_INDICATOR_WIDTH;
_indicatorDiameter = DEFAULT_INDICATOR_WIDTH;
_indicatorMargin = DEFAULT_INDICATOR_MARGIN;

#ifdef __IPHONE_7_0
[self setStyleWithDefaults:SMPageControlDefaultStyleModern];
#else
[self setStyleWithDefaults:SMPageControlDefaultStyleClassic];
#endif

_alignment = SMPageControlAlignmentCenter;
_verticalAlignment = SMPageControlVerticalAlignmentMiddle;

Expand Down Expand Up @@ -362,6 +374,23 @@ - (void)setScrollViewContentOffsetForCurrentPage:(UIScrollView *)scrollView anim
[scrollView setContentOffset:offset animated:animated];
}

- (void)setStyleWithDefaults:(SMPageControlStyleDefaults)defaultStyle
{
switch (defaultStyle) {
case SMPageControlDefaultStyleModern:
self.indicatorDiameter = DEFAULT_INDICATOR_WIDTH_LARGE;
self.indicatorMargin = DEFAULT_INDICATOR_MARGIN_LARGE;
self.pageIndicatorTintColor = [[UIColor whiteColor] colorWithAlphaComponent:0.2f];
break;
case SMPageControlDefaultStyleClassic:
default:
self.indicatorDiameter = DEFAULT_INDICATOR_WIDTH;
self.indicatorMargin = DEFAULT_INDICATOR_MARGIN;
self.pageIndicatorTintColor = [[UIColor whiteColor] colorWithAlphaComponent:0.3f];
break;
}
}

#pragma mark -

- (CGImageRef)createMaskForImage:(UIImage *)image CF_RETURNS_RETAINED
Expand Down

0 comments on commit c54d6ca

Please sign in to comment.