在任意UIView上显示Badge(兼容IOS6)
来源:互联网 发布:中航软件 中心 编辑:程序博客网 时间:2024/05/16 19:41
之前写过一篇文章在任意UIView上显示Badge,但IOS6上失败了,原来是苹果将Badge的类名改了,所以这里作下兼容,源码如下:
- - (UIView *)showBadgeValue:(NSString *)strBadgeValue
- {
- UITabBar *tabBar = [[UITabBar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
- UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"" image:nil tag:0];
- item.badgeValue = strBadgeValue;
- NSArray *array = [[NSArray alloc] initWithObjects:item, nil];
- tabBar.items = array;
- [item release];
- [array release];
- //寻找
- for (UIView *viewTab in tabBar.subviews) {
- for (UIView *subview in viewTab.subviews) {
- NSString *strClassName = [NSString stringWithUTF8String:object_getClassName(subview)];
- if ([strClassName isEqualToString:@"UITabBarButtonBadge"] ||
- [strClassName isEqualToString:@"_UIBadgeView"]) {
- //从原视图上移除
- [subview removeFromSuperview];
- //
- [self addSubview:subview];
- subview.frame = CGRectMake(self.frame.size.width-subview.frame.size.width, 0,
- subview.frame.size.width, subview.frame.size.height);
- [tabBar release];
- return subview;
- }
- }
- }
- [tabBar release];
- return nil;
- }
- - (void)removeBadgeValue
- {
- //
- for (UIView *subview in self.subviews) {
- NSString *strClassName = [NSString stringWithUTF8String:object_getClassName(subview)];
- if ([strClassName isEqualToString:@"UITabBarButtonBadge"] ||
- [strClassName isEqualToString:@"_UIBadgeView"]) {
- [subview removeFromSuperview];
- break;
- }
- }
- }
- (UIView *)showBadgeValue:(NSString *)strBadgeValue{ UITabBar *tabBar = [[UITabBar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]; UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"" image:nil tag:0]; item.badgeValue = strBadgeValue; NSArray *array = [[NSArray alloc] initWithObjects:item, nil]; tabBar.items = array; [item release]; [array release]; //寻找 for (UIView *viewTab in tabBar.subviews) { for (UIView *subview in viewTab.subviews) { NSString *strClassName = [NSString stringWithUTF8String:object_getClassName(subview)]; if ([strClassName isEqualToString:@"UITabBarButtonBadge"] || [strClassName isEqualToString:@"_UIBadgeView"]) { //从原视图上移除 [subview removeFromSuperview]; // [self addSubview:subview]; subview.frame = CGRectMake(self.frame.size.width-subview.frame.size.width, 0, subview.frame.size.width, subview.frame.size.height); [tabBar release]; return subview; } } } [tabBar release]; return nil;}- (void)removeBadgeValue{ // for (UIView *subview in self.subviews) { NSString *strClassName = [NSString stringWithUTF8String:object_getClassName(subview)]; if ([strClassName isEqualToString:@"UITabBarButtonBadge"] || [strClassName isEqualToString:@"_UIBadgeView"]) { [subview removeFromSuperview]; break; } }}
一个方法是显示Badge用的,一个是隐藏(移除)用的。
- 在任意UIView上显示Badge(兼容IOS6)
- 在任意UIView上显示Badge(兼容IOS6)
- 在任意UIView上显示Badge(兼容IOS6)
- 在任意UIView上显示Badge
- 在任意UIView上显示Badge
- Badge在多种机型上显示
- 如何在tabBar上显示 提示小红点标记(badge)
- 在小米、三星等系统应用图标上显示badge
- [iOS6]如何在Xcode6设置UIView的圆角显示
- UIMenuController 在UIView 上的 显示
- 在各种小控件上添加Badge
- ios6上,tabbar不显示
- iOS判断UIView是否显示在屏幕上
- iOS判断UIView是否显示在屏幕上
- 在ListView 的Column Header上显示任意图片
- 使joomla在mainbody区域上显示任意模块
- 在屏幕上任意位置显示字符串 基于8086汇编
- ios6应用运行在ios7系统上
- Ubuntu网卡配置
- 频段带宽导致WIN7无线网络上不了网,图标上有黄色小三角,里面有感叹号
- IOS应用开发架构
- 强烈建议一个重新分区工具
- VC++ 新建工程时,选不选WOSA这一项。socket编程时用到
- 在任意UIView上显示Badge(兼容IOS6)
- Socket文件传输示例
- 计算定期还款
- 浅谈图片优化的方法
- 程序包的创建与应用
- ALV根据显示列动态修改行汇总列数据
- MMX版本的Alpha Blend算法实现
- 动态生成xml
- Java网络编程-Socket