diff --git a/WMPageController/WMMenuView/WMMenuView.h b/WMPageController/WMMenuView/WMMenuView.h index 13f57ce..806d5e9 100755 --- a/WMPageController/WMMenuView/WMMenuView.h +++ b/WMPageController/WMMenuView/WMMenuView.h @@ -81,6 +81,8 @@ typedef NS_ENUM(NSUInteger, WMMenuViewLayoutMode) { @property (nonatomic, assign) WMMenuViewLayoutMode layoutMode; @property (nonatomic, assign) CGFloat contentMargin; @property (nonatomic, strong) UIColor *lineColor; +/** lineImage优先于lineColor */ +@property (nonatomic, strong) UIImage *lineImage; @property (nonatomic, assign) CGFloat progressViewBottomSpace; @property (nonatomic, weak) id delegate; @property (nonatomic, weak) id dataSource; diff --git a/WMPageController/WMMenuView/WMMenuView.m b/WMPageController/WMMenuView/WMMenuView.m index ac5bc3e..9f8a6ff 100755 --- a/WMPageController/WMMenuView/WMMenuView.m +++ b/WMPageController/WMMenuView/WMMenuView.m @@ -447,7 +447,8 @@ - (void)makeStyle { isTriangle:(self.style == WMMenuViewStyleTriangle) hasBorder:(self.style == WMMenuViewStyleSegmented) hollow:(self.style == WMMenuViewStyleFloodHollow) - cornerRadius:self.progressViewCornerRadius]; + cornerRadius:self.progressViewCornerRadius + lineImage:self.lineImage]; } - (void)deselectedItemsIfNeeded { @@ -563,10 +564,11 @@ - (CGFloat)itemMarginAtIndex:(NSInteger)index { } // MARK:Progress View -- (void)addProgressViewWithFrame:(CGRect)frame isTriangle:(BOOL)isTriangle hasBorder:(BOOL)hasBorder hollow:(BOOL)isHollow cornerRadius:(CGFloat)cornerRadius { +- (void)addProgressViewWithFrame:(CGRect)frame isTriangle:(BOOL)isTriangle hasBorder:(BOOL)hasBorder hollow:(BOOL)isHollow cornerRadius:(CGFloat)cornerRadius lineImage:(UIImage *)lineImage { WMProgressView *pView = [[WMProgressView alloc] initWithFrame:frame]; pView.itemFrames = [self convertProgressWidthsToFrames]; pView.color = self.lineColor.CGColor; + pView.image = lineImage; pView.isTriangle = isTriangle; pView.hasBorder = hasBorder; pView.hollow = isHollow; diff --git a/WMPageController/WMMenuView/WMProgressView.h b/WMPageController/WMMenuView/WMProgressView.h index f406db6..df81fab 100755 --- a/WMPageController/WMMenuView/WMProgressView.h +++ b/WMPageController/WMMenuView/WMProgressView.h @@ -11,7 +11,10 @@ NS_ASSUME_NONNULL_BEGIN @interface WMProgressView : UIView @property (nonatomic, strong) NSArray *itemFrames; +/** 若image有值,优先使用image*/ @property (nonatomic, assign) CGColorRef color; +@property (nonatomic, strong) UIImage *image; // image优先于color + @property (nonatomic, assign) CGFloat progress; /** 进度条的速度因数,默认为 15,越小越快, 大于 0 */ @property (nonatomic, assign) CGFloat speedFactor; diff --git a/WMPageController/WMMenuView/WMProgressView.m b/WMPageController/WMMenuView/WMProgressView.m index 40923fa..ed67e98 100755 --- a/WMPageController/WMMenuView/WMProgressView.m +++ b/WMPageController/WMMenuView/WMProgressView.m @@ -117,7 +117,8 @@ - (void)drawRect:(CGRect)rect { return; } - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(startX, lineWidth / 2.0, width, height - lineWidth) cornerRadius:self.cornerRadius]; + CGRect barframe = CGRectMake(startX, lineWidth / 2.0, width, height - lineWidth); + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:barframe cornerRadius:self.cornerRadius]; CGContextAddPath(ctx, path.CGPath); if (self.hollow) { @@ -125,8 +126,14 @@ - (void)drawRect:(CGRect)rect { CGContextStrokePath(ctx); return; } - CGContextSetFillColorWithColor(ctx, self.color); - CGContextFillPath(ctx); + + if (self.image) { + CGContextDrawImage(ctx, barframe, self.image.CGImage); + } else { + CGContextSetFillColorWithColor(ctx, self.color); + CGContextFillPath(ctx); + } + if (self.hasBorder) { // 计算点 diff --git a/WMPageController/WMPageController.h b/WMPageController/WMPageController.h index 0836c95..b238860 100755 --- a/WMPageController/WMPageController.h +++ b/WMPageController/WMPageController.h @@ -232,6 +232,12 @@ extern NSString *const WMControllerDidFullyDisplayedNotification; */ @property (nonatomic, nullable, strong) UIColor *progressColor; +/** + * 进度条的填充图片,若该属性有值,progressColor属性将无效 + * The progress's image.if it's not empty,'progressColor' property will be ignored. + */ +@property (nonatomic, nullable, strong) UIImage *progressImage; + /** * 定制进度条在各个 item 下的宽度 */ diff --git a/WMPageController/WMPageController.m b/WMPageController/WMPageController.m index b72c62a..478f453 100755 --- a/WMPageController/WMPageController.m +++ b/WMPageController/WMPageController.m @@ -467,6 +467,9 @@ - (void)wm_addMenuView { if (self.progressColor) { menuView.lineColor = self.progressColor; } + if (self.progressImage) { + menuView.lineImage = self.progressImage; + } if (self.showOnNavigationBar && self.navigationController.navigationBar) { self.navigationItem.titleView = menuView; } else { diff --git a/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/AppIcon.appiconset/Contents.json index 1d060ed..d8db8d6 100644 --- a/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -84,6 +84,11 @@ "idiom" : "ipad", "size" : "83.5x83.5", "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { diff --git a/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/tab_selected.imageset/Contents.json b/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/tab_selected.imageset/Contents.json new file mode 100644 index 0000000..62022c9 --- /dev/null +++ b/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/tab_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "tab_selected@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "tab_selected@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/tab_selected.imageset/tab_selected@2x.png b/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/tab_selected.imageset/tab_selected@2x.png new file mode 100644 index 0000000..c3b3fa7 Binary files /dev/null and b/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/tab_selected.imageset/tab_selected@2x.png differ diff --git a/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/tab_selected.imageset/tab_selected@3x.png b/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/tab_selected.imageset/tab_selected@3x.png new file mode 100644 index 0000000..5fea6ea Binary files /dev/null and b/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/Assets.xcassets/tab_selected.imageset/tab_selected@3x.png differ diff --git a/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/WMMainTableViewController.m b/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/WMMainTableViewController.m index 60dd0ec..639f6da 100644 --- a/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/WMMainTableViewController.m +++ b/WMPageControllerDemo/WMPageControllerExample/WMPageControllerExample/WMMainTableViewController.m @@ -122,6 +122,11 @@ - (void)customizePageController:(WMPageController *)vc { vc.titleSizeSelected = 16; } break; + case WMMenuViewStyleLine: { +// vc.progressColor = [UIColor redColor]; + vc.progressImage = [UIImage imageNamed:@"tab_selected"]; + } + break; default: break; }