iOS中类似微信红点显示功能

发布时间 - 2026-01-10 21:55:18    点击率:

设计思路:给UIView增加一个分类 所有的视图都可以根据需要来进行红点显示

#import <UIKit/UIKit.h>
@interface UIView (CHRRedDot)
@property (readonly, nonatomic) CALayer * chr_redDotLayer;
/**
 红点圆心的位置,与各个边之间的距离。如果距离<=0,则忽略距离
 */
@property (nonatomic, assign) UIEdgeInsets chr_redDotEdgeInsets;
/**
 红点的半径,默认为4
 */
@property (nonatomic, assign) CGFloat chr_redDotRadius;
/**
 红点的颜色,默认为0xFF5A5A
 */
@property (nonatomic, strong) UIColor * chr_redDotColor;
/**
 红点是否显示
 */
@property (nonatomic, assign) BOOL chr_redDotShow;
@end
#pragma mark - method
- (void)chr_updateRedDot {
  CALayer *redDot = self.chr_redDotLayer;
  if (self.chr_redDotShow) {
    if (redDot == nil) {
      redDot = [CALayer layer];
      self.chr_redDotLayer = redDot;
      [self.layer addSublayer:redDot];
    }
    redDot.backgroundColor = self.chr_redDotColor.CGColor;
    [self chr_layoutRedDot];
  } else {
    [redDot removeFromSuperlayer];
    self.chr_redDotLayer = nil;
  }
}
- (void)chr_layoutRedDot {
  CALayer *redDot = self.chr_redDotLayer;
  if (redDot == nil) return;
  CGFloat radius = self.chr_redDotRadius;
  redDot.cornerRadius = radius;
  UIEdgeInsets edgeInsets = self.chr_redDotEdgeInsets;
  CGFloat originX = edgeInsets.right <= 0 ? edgeInsets.left - radius : self.bounds.size.width - edgeInsets.right + radius;
  CGFloat originY = edgeInsets.bottom <= 0 ? edgeInsets.top - radius : self.bounds.size.height - edgeInsets.bottom + radius;
  CGFloat length = radius * 2;
  redDot.frame = CGRectMake(originX, originY, length, length);
}

以上所述是小编给大家介绍的iOS中类似微信红点显示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# ios  # 微信红点显示  # IOS开发过程中的消息通知--小红点  # IOS设置QQ小红点消除的方法(一键退朝)  # iOS TabBarItem设置红点(未读消息)  # 小编  # 默认为  # 在此  # 给大家  # 可以根据  # 所述  # 给我留言  # 感谢大家  # 疑问请  # 有任何  # CGFloat  # chr_redDotRadius  # chr_redDotEdgeInsets  # chr_redDotLayer  # assign  # UIEdgeInsets  # BOOL  # chr_redDotShow  # pragma  # chr_redDotColor 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: Java类加载基本过程详细介绍  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel如何记录自定义日志?(Log频道配置)  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  如何在IIS中配置站点IP、端口及主机头?  Linux系统命令中tree命令详解  零基础网站服务器架设实战:轻量应用与域名解析配置指南  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何撰写建站申请书?关键要点有哪些?  Python文件异常处理策略_健壮性说明【指导】  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  html5的keygen标签为什么废弃_替代方案说明【解答】  Laravel中的withCount方法怎么高效统计关联模型数量  Python面向对象测试方法_mock解析【教程】  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  html如何与html链接_实现多个HTML页面互相链接【互相】  JS经典正则表达式笔试题汇总  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在万网自助建站中设置域名及备案?  linux写shell需要注意的问题(必看)  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  轻松掌握MySQL函数中的last_insert_id()  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel观察者模式如何使用_Laravel Model Observer配置  Laravel如何处理异常和错误?(Handler示例)  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  韩国服务器如何优化跨境访问实现高效连接?  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  java中使用zxing批量生成二维码立牌  免费网站制作appp,免费制作app哪个平台好?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Laravel如何实现数据库事务?(DB Facade示例)  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何快速搭建虚拟主机网站?新手必看指南  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  HTML 中动态设置元素 name 属性的正确语法详解  b2c电商网站制作流程,b2c水平综合的电商平台?  EditPlus中的正则表达式 实战(2)  网站制作壁纸教程视频,电脑壁纸网站?  如何在IIS7上新建站点并设置安全权限?  中山网站制作网页,中山新生登记系统登记流程?  如何在七牛云存储上搭建网站并设置自定义域名?