ios 类似微信红点显示功能

设计思路:给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);
}
时间: 2025-01-02 16:26:02

ios 类似微信红点显示功能的相关文章

【转】swift实现ios类似微信输入框跟随键盘弹出的效果

swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会跟随键盘一起向下收回,二者完全无缝连接,那么这是怎么实现的呢,也许你会说直接在键盘弹出的时候把输入框也向上移动不就行了?但是我使用这种方法的时候,发现效果十分不理想,会有明显的滞后现象,原因有以下几点: 键盘弹出动画并不是匀速,键盘和输入框的时间曲线不完全一致,运动不同步 各种键盘的高度不一样(比如

iOS开发&gt;学无止境 - AKTabBarController:类似微信的第三方库

自从有了评论之后,就可以很方便的和大家交流.以前都是我一个人默默的发文章,看不出大家对文章的看法.评论开通之后,就可以很快速的获取大家对文章的看法. 有人会指出文章里有错误的地方,真的很感激他们,非常的认真:有人会对文章说出自己的见解,加深自己的印象,同时,也能帮助到其他的朋友:有人也会在评论里,提出一些问题,但是鉴于评论的字数限制,只能简单的回答一下. 在昨天的文章评论里面,有一个朋友提出了一个问题,关于微信导航栏的. 问题分析和解答 问: 自定义导航栏怎么写?就像微信那样,tabBar的四个

利用html5实现类似微信的手机摇一摇功能

利用html5实现类似微信的手机摇一摇功能,并播放音乐. 1.  deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度.方位.朝向等. 2.  deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据. 不多说直接上代码, Javascript: [javascript] view plaincopy var SHAKE_THRESHOLD = 3000; var last_update = 0;

iOS 关于微信检测SDK应用的原理浅析

微信作为一个开放平台,各方面都是做得比较好的,推出了SDK之后,微信与使用了SDK的应用便能进行更多交互.但在iOS平台上,应用间交换数据还是相对麻烦的,那么微信为什么能直接在应用检测到其他使用了SDK的应用呢?基于这个疑问,我用了一个下午研究其原理. 一.SDK的方法 我之前也没使用过微信的SDK,不过下载后,查看发现SDK接口有这么一段 1 /*! @brief WXApi的成员函数,在微信终端程序中注册第三方应用. 2 * 3 * 需要在每次启动第三方应用程序时调用.第一次调用后,会在微信

iOS项目——微信H5棋牌牛牛斗牛出租平台项目开发环境搭建教程

在开发项目之前,我们需要做一些准备工作,了解iOS扩展--微信H5棋牌牛牛斗牛出租平台(h5.fanshubbs.com联系Q_1687054422),学习iOS学习--Xcode9上传项目到GitHub是我们进行版本控制和代码管理的选择之一,明白iOS学习--iOS项目Project 和 Targets配置详解则更利于我们今天对完整项目开发环境的搭建,这些内容在在之前的博文中都已经有了一些总结和步骤说明,具体详情可以戳链接查看. 开发一个完整的App,不同于我们平时学习和练习时随意新建一个pr

最新模仿ios版微信应用源码

http://www.cnblogs.com/chenkaiyuan/p/3695646.html 最新模仿ios版微信应用源码,码迷,mamicode.com

小功能——类似微信里,评论内容里面,点击每个人的用户名进入个人主页

项目里的朋友圈页面,每幅图片的评论内容里面,有不同的用户进行评论,起初想法是点击用户名直接进行回复,后来看微信都是点击评论内容进行回复评论的发起人,这个好做,把这个textview绑定一个监听器就ok了 后来再一想,如果要实现类似微信点击用户名就进入用户的主页,怎么让用户名可以点击呢? 现在父布局下面在new一个水平布局的linearlayout,然后根据把每个用户.包括评论内容都设置进textview里面,然后通过linearlayout的addview()方法,把这些textview添加进去

解决ios、微信移动端的position: fixed; 支持性不好的问题 &amp;&amp; 禁用下拉暴露黑底的功能

解决ios.微信移动端的position: fixed; 支持性不好的问题 在chrome中的多个部分使用了position: fixed之后,都可以正常的布局,但是放在微信上却出现了不能正常显示的问题(第一个问题). 并且使用了postion: fixed; 的一个种类名称栏在微信下下滑不了,而body是可以的,确实让人很郁闷(第二个问题). 对于第二个问题,我们可以采取的方式是使得微信不能下滑暴露出 powered by ... 的字样. 但是对于第一个问题,确实没有很好的解决方法. 所以就

android 实现类似微信缓存和即时更新好友头像

引言 使用微信时我们会发现,首次进入微信的好友列表时,会加载好友头像,但是再次进入时,就不用重新加载了,而且其他页面都不用重新加载,说明微信的好友头像是缓存在本地的,然后好友修改头像后,又会及时的更新,这个功能是如何实现的呢,我们来分析一下 分析 关于头像缓存的实现 头像是网络图片,而且数据量较大,如果用我们常用的SharedPreferences将头像以Bitmap的形式存储,势必会造成OOM,这个方法是行不通的,我们存储的只能是图片的地址,但是如果只存储地址的话,要转化成图片,还是要通过网络