UITabBar的选项卡上有时会需要显示一个红圈,红圈里是数字或者其他字符,术语叫徽章,比如微信主页面主选项卡上会用这种方式提示新消息条数,但也想在其他地方显示这个徽章怎么办呢?比如微信中每个联系人的头像右上角显示该联系人的新消息条数。当然有第三方的源码,但效果还是不如系统提供的好。
系统这个徽章的类叫UITabBarButtonBadge,但是该类是个私有类,开发人员不能用。先贴源码
[plain] view plaincopy
+ (UIView *)addBadgeViewTo:(UIView *)superview withBadgeValue:(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 compare:@"UITabBarButtonBadge"] == NSOrderedSame) {
//从原视图上移除
[subview removeFromSuperview];
//
[superview addSubview:subview];
[tabBar release];
return subview;
}
}
}
[tabBar release];
return nil;
}
输入参数为想要显示徽章的UIView和徽章上要显示的字符串,返回徽章的UIView以调整徽章的位置。
转载于:https://my.oschina.net/u/2242007/blog/352918
分享到:
相关推荐
本项目“通过协议扩展高斯模糊任意 UIView”提供了一种优雅的方式来为Swift中的UIView添加高斯模糊功能,无需为每个需要模糊的视图创建单独的类或方法。下面将详细解析这个开源项目的实现原理、使用方法及其优势。 ...
`SSBadgeView`是一个轻量级的库,它允许开发者方便地在任何UIView上添加和定制Badge视图。 首先,我们需要了解`UITableView`的基本概念。UITableView是iOS中的一个关键控件,用于展示列表数据。每个单元格(Cell)...
Badge是iOS用户界面中一个小型的通知元素,通常显示在应用图标右上角,用于提示用户有新的未处理信息或更新。它可以是纯数字,也可以是简单的文字,例如“New”或“Update”。 在iOS中实现badge功能,我们可以通过...
但是,`UIView`默认没有开启边框,所以我们需要先调用`setNeedsLayout()`方法更新布局,然后设置`layer.masksToBounds = true`以确保边框在视图内部显示。 ```swift let view = UIView() view.layer.borderWidth = ...
一句代码设置UIView及其子类的badgeValue,默认右上角显示 cocoaChina 上传代码比较麻烦,如果有什么问题或者添加什么功能,欢迎大家去我简书留言http://www.jianshu.com/p/497b33250ec1 喜欢的话可以关注我,...
ShadowView 让你能够轻松在UIView上实现阴影效果
1. **快速添加徽标**:只需一行代码,就可以在任何UIView对象上添加红点徽标,如`yourView.ye_setBadge(1)`,这将在视图上显示一个带有数字1的红点。 2. **自定义徽标样式**:Yeebadge支持自定义徽标的颜色、大小、...
作者CooperRS,源码RMActionController,RMActionController 是一个 iOS 控制器,可像 UIActionSheet/ UIAlertController 那样,显示任意 UIView。
在iOS开发中,`UIView`是构建用户界面的基础,几乎所有的可见元素都基于它。`UIView`不仅负责绘制和显示内容,还处理用户的交互事件。以下是对标题和描述中涉及的`UIView`知识点的详细解释: 1. **Bounds和Frame的...
4. `viewWillAppear`方法在视图即将显示在屏幕上之前调用,此时视图的布局和动画设置已经完成。默认情况下,这个方法不执行任何操作,但开发者可以在这里执行一些准备显示的逻辑,如启动动画或者更新界面元素。 5. ...
首先,UIView是一个用于在屏幕上显示内容的基本类,它可以包含子视图,承载各种控件或自定义绘制的图形。当需要将UIView保存为图片时,通常会用到`renderInContext:`方法。这个方法可以将UIView的内容渲染到一个...
UIView 动画 UIView动画
UIView是iOS中的一个基础视图类,它是所有UI组件(如UILabel、UIButton等)的基类,用于在屏幕上显示内容和处理用户交互。而UIImage则是用来表示静态图像的数据对象,它可以被用作UIImageView的源图片,或者在其他...
在`UITabBarItem` 上设置`badge`可以通过以下代码实现: ```swift let item = tabBarController?.tabBar.items?[index] item?.badgeValue = "1" // 设置badge值为1 ``` 然而,系统默认的`badge`样式可能无法满足...
在iOS开发中,UI设计往往追求独特且富有动态感的效果,其中UIView的渐变效果就是一个常用的视觉技巧。本文将深入探讨如何在iOS中实现UIView的渐变效果,并介绍一个已经封装好的解决方案,允许开发者轻松地在应用中...
在iOS开发中,为UIView添加局部阴影是一种常见的视觉优化手段,可以增强用户界面的层次感和立体感。本文将深入探讨如何实现标题所指的"ios-UIView设置局部阴影,左右上下,左右底部阴影"这一功能,同时参考提供的...
其中,“UIView镂空”是一种特殊的视图处理技巧,用于在视图上创建透明区域,使得背景透过这些区域显示出来。这种效果通常用于创建如导航栏、按钮等UI元素的独特视觉效果,或者在某个视图上进行局部透明化处理。 ...
在iOS开发中,UIButton是苹果提供的一个基础控件,用于创建和处理用户交互的按钮。然而,有时我们可能需要在按钮上...这个压缩包是iOS开发中实用的代码片段,对于那些需要在按钮上显示未读标记或计数的场景非常有用。
在iOS开发中,AutoLayout是苹果提供的一种强大的界面布局机制,它允许开发者在不同尺寸的屏幕上创建适应性强、响应式的用户界面。`UIView AutoLayout`是这个机制的一个扩展,为`UIView`类添加了分类,提供了更加简洁...
UIView-Positioning, 在UIView对象中,基于简单属性的框架属性设置 uiview定位收费 UIView Positioning 是一个快速扩展,它提供简单的shorthand 方法,以方便的方式定义任何UIView对象的框架属性( 宽度,高度,x,y ...