ios 消息按钮添加角标显示
2017-11-22 13:25
375 查看
在做聊天时,其它界面的消息按钮展示,会遇到显示未读消息条数的情况.
今天整理下,处理消息角标设置方法.
直接上代码.
创建一个类 BageButton继承UIButton类,并拓展这个按钮的属性.
.h文件:
//设置角标数字font
#define SCBadgeNumberFontSize [UIFont systemFontOfSize:8]
@interface JKBadgeView :
UIButton
/**
* badgeView上显示的数字
*/
@property (nonatomic,
copy) NSString *badgeValue;
@end
.m文件:
- (instancetype)initWithFrame:(CGRect)frame {
self = [super
initWithFrame:frame];
if (self) {
// 不允许点击
self.userInteractionEnabled =
NO;
// 设置字体
self.titleLabel.font
= SCBadgeNumberFontSize;
// 设置居右
self.titleLabel.textAlignment =
NSTextAlignmentRight;
// 字体颜色
[self
setTitleColor:[UIColor
redColor] forState:UIControlStateNormal];
}
return
self;
}
- (void)setBadgeValue:(NSString *)badgeValue
{
// 设置属性
_badgeValue = badgeValue;
// 设置badgeView内容
[self
setBadgeViewWithbadgeValue:badgeValue];
}
- (void)setBadgeViewWithbadgeValue:(NSString *)badgeValue {
// 设置文字内容
[self
setTitle:badgeValue forState:UIControlStateNormal];
// 判断是否有内容,设置隐藏属性
if (badgeValue.length ==
0 ||
[badgeValue isEqualToString:@"0"]||[JK_Helper
isStringEmpty:badgeValue]) {
// 数值内容为空或数值为0,则隐藏
self.hidden =
YES;
}
else {
self.hidden =
NO;
}
long badgeNumber = [badgeValue
longLongValue];
// 如果文字尺寸大于控件宽度
if (badgeNumber >
9 && badgeNumber < 100) {
// 显示中等大小图片
[self
setBackgroundImage:[UIImage
imageNamed:@""]
forState:UIControlStateNormal];
}
else if (badgeNumber >
99) {
// 设置文字内容
[self
setTitle:@"99+"
forState:UIControlStateNormal];
// 显示内容和大红点背景
[self
setBackgroundImage:[UIImage
imageNamed:@""]
forState:UIControlStateNormal];
} else {
// 设置图片
//badge_cart_icon3
[self
setBackgroundImage:[UIImage
imageNamed:@""]
forState:UIControlStateNormal];
}
// 尺寸自适应
[self
sizeToFit];
}
@end
在需要使用角标按钮的地方,直接用BageButton 来创建这个按钮就ok了.
今天整理下,处理消息角标设置方法.
直接上代码.
创建一个类 BageButton继承UIButton类,并拓展这个按钮的属性.
.h文件:
//设置角标数字font
#define SCBadgeNumberFontSize [UIFont systemFontOfSize:8]
@interface JKBadgeView :
UIButton
/**
* badgeView上显示的数字
*/
@property (nonatomic,
copy) NSString *badgeValue;
@end
.m文件:
- (instancetype)initWithFrame:(CGRect)frame {
self = [super
initWithFrame:frame];
if (self) {
// 不允许点击
self.userInteractionEnabled =
NO;
// 设置字体
self.titleLabel.font
= SCBadgeNumberFontSize;
// 设置居右
self.titleLabel.textAlignment =
NSTextAlignmentRight;
// 字体颜色
[self
setTitleColor:[UIColor
redColor] forState:UIControlStateNormal];
}
return
self;
}
- (void)setBadgeValue:(NSString *)badgeValue
{
// 设置属性
_badgeValue = badgeValue;
// 设置badgeView内容
[self
setBadgeViewWithbadgeValue:badgeValue];
}
- (void)setBadgeViewWithbadgeValue:(NSString *)badgeValue {
// 设置文字内容
[self
setTitle:badgeValue forState:UIControlStateNormal];
// 判断是否有内容,设置隐藏属性
if (badgeValue.length ==
0 ||
[badgeValue isEqualToString:@"0"]||[JK_Helper
isStringEmpty:badgeValue]) {
// 数值内容为空或数值为0,则隐藏
self.hidden =
YES;
}
else {
self.hidden =
NO;
}
long badgeNumber = [badgeValue
longLongValue];
// 如果文字尺寸大于控件宽度
if (badgeNumber >
9 && badgeNumber < 100) {
// 显示中等大小图片
[self
setBackgroundImage:[UIImage
imageNamed:@""]
forState:UIControlStateNormal];
}
else if (badgeNumber >
99) {
// 设置文字内容
[self
setTitle:@"99+"
forState:UIControlStateNormal];
// 显示内容和大红点背景
[self
setBackgroundImage:[UIImage
imageNamed:@""]
forState:UIControlStateNormal];
} else {
// 设置图片
//badge_cart_icon3
[self
setBackgroundImage:[UIImage
imageNamed:@""]
forState:UIControlStateNormal];
}
// 尺寸自适应
[self
sizeToFit];
}
@end
在需要使用角标按钮的地方,直接用BageButton 来创建这个按钮就ok了.
相关文章推荐
- iOS开发--底部按钮和应用图标显示未读消息
- iOS cell中添加按钮图片,图片不显示,点击有反应
- iOS 导航条上添加UISegmentedControl,点击分类按钮,显示不同的ViewController
- iOS开发--底部按钮和应用图标显示未读消息
- iOS 底部按钮和应用图标显示未读消息(带数字)
- iOS开发--底部按钮和应用图标显示未读消息
- iOS开发--底部按钮和应用图标显示未读消息
- MFC面板中显示内容及按钮消息的添加
- MFC面板中显示内容及按钮消息的添加
- iOS 在imageview中添加按钮 并能响应消息 响应者链条
- iOS实现自定义购物车角标显示购物数量(添加商品时角标抖动 Vie)
- iOS 为自定义返回按钮的页面添加右滑返回
- 只将unity的UI控件添加到iOS视图层上,不显示unity原生的背景(一)
- 为数字键盘添加自定义按钮的方法(iOS所有版本适用
- MFC单文档添加按钮控件、消息响应函数
- 列表显示新闻等信息,添加新消息图标
- iOS 数字输入键盘添加一个完成按钮
- IOS应用桌面icon上不显示角标问题修复
- IOS UINavigationController UITabBarController嵌套使用的时候显示消息数量
- 给显示窗口添加一个Resizeable的角标