iOS之基本控件和tabBar右上角角标显示与隐藏
2016-09-14 16:30
465 查看
最近APP大幅度改版更新页面,角标显示的地方比较多,原有的角标显示逻辑混乱,所以参考了以为大神的处理办法对角标进行了如下整理:
右上角角标使用说明
1.首先引入#import"UIView+redPoint.h"
2.使用类型
A.某种控件使用,比如UIImageView、UILabel等等
若此时UIImageView的对象名为txsqImgView,则:
<1>.若角标显示为红点,只需使用下面此行代码
[txsqImgViewshowRedAtOffSetX:0AndOffSetY:0OrValue:nil];
<2>.若角标显示为数字,只需使用下面此行代码
[txsqImgViewshowRedAtOffSetX:0AndOffSetY:0OrValue:nil];
[txsqImgViewshowRedAtOffSetX:0AndOffSetY:0OrValue:@"2"];
<3>.隐藏角标
[txsqImgViewhideRedPoint];
效果如下:
B.若是底部导航栏使用,即UITabBarController
若此时UITabBarController的对象名为self.tabBarController.tabBar,则:
<1>.若角标显示为红点,只需使用下面此行代码
[self.tabBarController.tabBarshowBadgeOnItemIndex:1];
<2>.隐藏角标
[self.tabBarController.tabBarhideBadgeOnItemIndex:1];
<3>.若角标显示数字,则使用系统的badgeValue赋值即可
效果如下:
代码如下:
1.UIView+redPoint.h
2.UIView+redPoint.m
右上角角标使用说明
1.首先引入#import"UIView+redPoint.h"
2.使用类型
A.某种控件使用,比如UIImageView、UILabel等等
若此时UIImageView的对象名为txsqImgView,则:
<1>.若角标显示为红点,只需使用下面此行代码
[txsqImgViewshowRedAtOffSetX:0AndOffSetY:0OrValue:nil];
<2>.若角标显示为数字,只需使用下面此行代码
[txsqImgViewshowRedAtOffSetX:0AndOffSetY:0OrValue:nil];
[txsqImgViewshowRedAtOffSetX:0AndOffSetY:0OrValue:@"2"];
<3>.隐藏角标
[txsqImgViewhideRedPoint];
效果如下:
B.若是底部导航栏使用,即UITabBarController
若此时UITabBarController的对象名为self.tabBarController.tabBar,则:
<1>.若角标显示为红点,只需使用下面此行代码
[self.tabBarController.tabBarshowBadgeOnItemIndex:1];
<2>.隐藏角标
[self.tabBarController.tabBarhideBadgeOnItemIndex:1];
<3>.若角标显示数字,则使用系统的badgeValue赋值即可
效果如下:
代码如下:
1.UIView+redPoint.h
#import @interface UIView (redPoint) - (void)showRedAtOffSetX:(float)offsetX AndOffSetY:(float)offsetY OrValue:(NSString *)value; - (void)hideRedPoint; //tabbar方法 - (void)showBadgeOnItemIndex:(int)index; //显示小红点 - (void)hideBadgeOnItemIndex:(int)index; //隐藏小红点 @end
2.UIView+redPoint.m
#import #import "UIView+redPoint.h" #define USERDEF [NSUserDefaults standardUserDefaults] @implementation UIView (redPoint) #pragma other(redPoint) //添加显示 - (void)showRedAtOffSetX:(float)offsetX AndOffSetY:(float)offsetY OrValue:(NSString *)value{ [self removeRedPoint];//添加之前先移除,避免重复添加 //新建小红点 UIView *badgeView = [[UIView alloc]init]; badgeView.tag = 998; CGFloat viewWidth = 12; if (value) { viewWidth = 18; UILabel *valueLbl = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, viewWidth, viewWidth)]; valueLbl.text = value; valueLbl.font = [UIFont systemFontOfSize:12]; valueLbl.textColor = [UIColor whiteColor]; valueLbl.textAlignment = NSTextAlignmentCenter; valueLbl.clipsToBounds = YES; [badgeView addSubview:valueLbl]; } badgeView.layer.cornerRadius = viewWidth / 2; badgeView.backgroundColor = [UIColor redColor]; CGRect tabFrame = self.frame; //确定小红点的位置 if (offsetX == 0) { // offsetX = 1; offsetX = -viewWidth/2.0; } if (offsetY == 0) { // offsetY = 0.05; offsetY = -viewWidth/2.0; } CGFloat x = ceilf(tabFrame.size.width + offsetX); CGFloat y = 0; if (offsetY == -viewWidth/2.0) { y = ceilf(offsetY); }else{ y = ceilf(offsetY * tabFrame.size.height); } badgeView.frame = CGRectMake(x, y, viewWidth, viewWidth); [self addSubview:badgeView]; } //隐藏 - (void)hideRedPoint{ [self removeRedPoint]; } //移除 - (void)removeRedPoint{ //按照tag值进行移除 for (UIView *subView in self.subviews) { if (subView.tag == 998) { [subView removeFromSuperview]; } } } #pragma mark Tabbar(redPoint) //显示小红点 - (void)showBadgeOnItemIndex:(int)index{ NSString *keyStr = [NSString stringWithFormat:@"%d_HADSET",index]; if ([USERDEF objectForKey:keyStr]) { return; } else { [USERDEF setObject:@"HADSET" forKey:keyStr]; } //移除之前可能存在的小红点 [self removeBadgeOnItemIndex:index]; //新建小红点 UIView *badgeView = [[UIView alloc]init]; badgeView.tag = 888 + index; badgeView.layer.cornerRadius = 6; badgeView.backgroundColor = [UIColor redColor]; CGRect tabFrame = self.frame; //确定小红点的位置 float percentX = (index +0.55) / 5; //5为tabbaritem的总个数 CGFloat x = ceilf(percentX * tabFrame.size.width); CGFloat y = ceilf(0.05 * tabFrame.size.height); badgeView.frame = CGRectMake(x, y, 12, 12); [self addSubview:badgeView]; } //隐藏小红点 - (void)hideBadgeOnItemIndex:(int)index{ NSString *keyStr = [NSString stringWithFormat:@"%d_HADSET",index]; //移除小红点 [self removeBadgeOnItemIndex:index]; if ([USERDEF objectForKey:keyStr]) { [USERDEF removeObjectForKey:keyStr]; } } //移除 - (void)removeBadgeOnItemIndex:(int)index{ //按照tag值进行移除 for (UIView *subView in self.subviews) { if (subView.tag == 888+index) { [subView removeFromSuperview]; } } } @end
相关文章推荐
- iOS界面跳转时导航栏和tabBar的隐藏与显示功能
- IOS 显示和隐藏tabbar
- iOS tableView滑动隐藏/显示tabbar
- 【iOS(swift)笔记-4】Push页面隐藏tabor,Pop回来自动显示tabbar(这样tabbar就不会有从下往上弹出的动作)
- 【iOS】基本控件:文本输入框、开关、分段控件、滑块与输入键盘隐藏的问题
- iOS之隐藏/显示tabbar
- iOS界面跳转过程中导航栏和tabBar的隐藏与显示
- iOS--隐藏和显示TabBar的方法
- 关于iOS tabBar隐藏和显示问题
- ios隐藏和显示TabBar的方法
- iOS 滑动隐藏/显示tabbar
- IOS - TabBarController 显示/隐藏第一级页面的TabBar
- 【iOS】push控制器时隐藏tabbar,dismiss控制器时显示tabbar
- iOS:TabBarController 显示/隐藏第一级页面的TabBar
- 【Xamarin学习笔记】Xamarin.iOS中隐藏和显示Tabbar
- iOS开发 之 navigationbar 与 tabbar 的显示与隐藏
- iOS控件的动画显示与隐藏
- iOS中显示和隐藏TabBar的动画效果
- iOS侧滑隐藏,显示tabbar的方法
- javascript控制页面控件隐藏显示的两种方法