| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- //
- // UIBarButtonItem+WZLBadge.m
- // WZLBadgeDemo
- //
- // Created by zilin_weng on 15/8/10.
- // Copyright (c) 2015年 Weng-Zilin. All rights reserved.
- //
- #import "UIBarButtonItem+WZLBadge.h"
- #import <objc/runtime.h>
- #define kActualView [self getActualBadgeSuperView]
- @implementation UIBarButtonItem (WZLBadge)
- #pragma mark -- public methods
- /**
- * show badge with red dot style and WBadgeAnimTypeNone by default.
- */
- - (void)showBadge
- {
- [kActualView showBadge];
- }
- /**
- * showBadge
- *
- * @param style WBadgeStyle type
- * @param value (if 'style' is WBadgeStyleRedDot or WBadgeStyleNew,
- this value will be ignored. In this case, any value will be ok.)
- * @param aniType
- */
- - (void)showBadgeWithStyle:(WBadgeStyle)style
- value:(NSInteger)value
- animationType:(WBadgeAnimType)aniType
- {
- [kActualView showBadgeWithStyle:style value:value animationType:aniType];
- }
- /**
- * clear badge
- */
- - (void)clearBadge
- {
- [kActualView clearBadge];
- }
- - (void)resumeBadge
- {
- [kActualView resumeBadge];
- }
- #pragma mark -- private method
- /**
- * Because UIBarButtonItem is kind of NSObject, it is not able to directly attach badge.
- This method is used to find actual view (non-nil) inside UIBarButtonItem instance.
- *
- * @return view
- */
- - (UIView *)getActualBadgeSuperView
- {
- return [self valueForKeyPath:@"_view"];//use KVC to hack actual view
- }
- #pragma mark -- setter/getter
- - (UILabel *)badge
- {
- return kActualView.badge;
- }
- - (void)setBadge:(UILabel *)label
- {
- [kActualView setBadge:label];
- }
- - (UIFont *)badgeFont
- {
- return kActualView.badgeFont;
- }
- - (void)setBadgeFont:(UIFont *)badgeFont
- {
- [kActualView setBadgeFont:badgeFont];
- }
- - (UIColor *)badgeBgColor
- {
- return [kActualView badgeBgColor];
- }
- - (void)setBadgeBgColor:(UIColor *)badgeBgColor
- {
- [kActualView setBadgeBgColor:badgeBgColor];
- }
- - (UIColor *)badgeTextColor
- {
- return [kActualView badgeTextColor];
- }
- - (void)setBadgeTextColor:(UIColor *)badgeTextColor
- {
- [kActualView setBadgeTextColor:badgeTextColor];
- }
- - (WBadgeAnimType)aniType
- {
- return [kActualView aniType];
- }
- - (void)setAniType:(WBadgeAnimType)aniType
- {
- [kActualView setAniType:aniType];
- }
- - (CGRect)badgeFrame
- {
- return [kActualView badgeFrame];
- }
- - (void)setBadgeFrame:(CGRect)badgeFrame
- {
- [kActualView setBadgeFrame:badgeFrame];
- }
- - (CGPoint)badgeCenterOffset
- {
- return [kActualView badgeCenterOffset];
- }
- - (void)setBadgeCenterOffset:(CGPoint)badgeCenterOffset
- {
- [kActualView setBadgeCenterOffset:badgeCenterOffset];
- }
- - (NSInteger)badgeMaximumBadgeNumber
- {
- return [kActualView badgeMaximumBadgeNumber];
- }
- - (void)setBadgeMaximumBadgeNumber:(NSInteger)badgeMaximumBadgeNumber
- {
- [kActualView setBadgeMaximumBadgeNumber:badgeMaximumBadgeNumber];
- }
- @end
|