| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- #import "SCIndexViewConfiguration.h"
- const NSUInteger SCIndexViewInvalidSection = NSUIntegerMax - 1;
- const NSInteger SCIndexViewSearchSection = -1;
- static inline UIColor *SCGetColor(CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha)
- {
- return [UIColor colorWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:alpha];
- }
- @interface SCIndexViewConfiguration ()
- @property (nonatomic, assign) SCIndexViewStyle indexViewStyle; // 索引元素之间间隔距离
- @end
- @implementation SCIndexViewConfiguration
- @synthesize indexViewStyle = _indexViewStyle;
- + (instancetype)configuration
- {
- return [self configurationWithIndexViewStyle:SCIndexViewStyleDefault];
- }
- + (instancetype)configurationWithIndexViewStyle:(SCIndexViewStyle)indexViewStyle
- {
- UIColor *indicatorBackgroundColor, *indicatorTextColor;
- UIFont *indicatorTextFont;
- CGFloat indicatorHeight;
- switch (indexViewStyle) {
- case SCIndexViewStyleDefault:
- {
- indicatorBackgroundColor = SCGetColor(200, 200, 200, 1);
- indicatorTextColor = [UIColor whiteColor];
- indicatorTextFont = [UIFont systemFontOfSize:38];
- indicatorHeight = 50;
- }
- break;
-
- case SCIndexViewStyleCenterToast:
- {
- indicatorBackgroundColor = SCGetColor(200, 200, 200, 0.8);
- indicatorTextColor = [UIColor whiteColor];
- indicatorTextFont = [UIFont systemFontOfSize:60];
- indicatorHeight = 120;
- }
- break;
-
- default:
- return nil;
- break;
- }
-
- return [self configurationWithIndexViewStyle:indexViewStyle
- indicatorBackgroundColor:indicatorBackgroundColor
- indicatorTextColor:indicatorTextColor
- indicatorTextFont:indicatorTextFont
- indicatorHeight:indicatorHeight
- indicatorRightMargin:40
- indicatorCornerRadius:10
- indexItemBackgroundColor:[UIColor clearColor]
- indexItemTextColor:[UIColor darkGrayColor]
- indexItemTextFont:[UIFont fontWithName:@"Helvetica" size:12]
- indexItemSelectedBackgroundColor:SCGetColor(40, 170, 40, 1)
- indexItemSelectedTextColor:[UIColor whiteColor]
- indexItemSelectedTextFont:[UIFont fontWithName:@"Helvetica" size:12]
- indexItemHeight:15
- indexItemRightMargin:5
- indexItemsSpace:0];
- }
- + (instancetype)configurationWithIndexViewStyle:(SCIndexViewStyle)indexViewStyle
- indicatorBackgroundColor:(UIColor *)indicatorBackgroundColor
- indicatorTextColor:(UIColor *)indicatorTextColor
- indicatorTextFont:(UIFont *)indicatorTextFont
- indicatorHeight:(CGFloat)indicatorHeight
- indicatorRightMargin:(CGFloat)indicatorRightMargin
- indicatorCornerRadius:(CGFloat)indicatorCornerRadius
- indexItemBackgroundColor:(UIColor *)indexItemBackgroundColor
- indexItemTextColor:(UIColor *)indexItemTextColor
- indexItemTextFont:(UIFont *)indexItemTextFont
- indexItemSelectedBackgroundColor:(UIColor *)indexItemSelectedBackgroundColor
- indexItemSelectedTextColor:(UIColor *)indexItemSelectedTextColor
- indexItemSelectedTextFont:(UIFont *)indexItemSelectedTextFont
- indexItemHeight:(CGFloat)indexItemHeight
- indexItemRightMargin:(CGFloat)indexItemRightMargin
- indexItemsSpace:(CGFloat)indexItemsSpace
- {
- SCIndexViewConfiguration *configuration = [self new];
- if (!configuration) return nil;
-
- configuration.indexViewStyle = indexViewStyle;
- configuration.indicatorBackgroundColor = indicatorBackgroundColor;
- configuration.indicatorTextColor = indicatorTextColor;
- configuration.indicatorTextFont = indicatorTextFont;
- configuration.indicatorHeight = indicatorHeight;
- configuration.indicatorRightMargin = indicatorRightMargin;
- configuration.indicatorCornerRadius = indicatorCornerRadius;
-
- configuration.indexItemBackgroundColor = indexItemBackgroundColor;
- configuration.indexItemTextColor = indexItemTextColor;
- configuration.indexItemTextFont = indexItemTextFont;
- configuration.indexItemSelectedBackgroundColor = indexItemSelectedBackgroundColor;
- configuration.indexItemSelectedTextColor = indexItemSelectedTextColor;
- configuration.indexItemSelectedTextFont = indexItemSelectedTextFont;
- configuration.indexItemHeight = indexItemHeight;
- configuration.indexItemRightMargin = indexItemRightMargin;
- configuration.indexItemsSpace = indexItemsSpace;
-
- return configuration;
- }
- @end
|