ios 類似微信紅點顯示功能

来源:http://www.cnblogs.com/rongStep/archive/2016/12/18/6193683.html
-Advertisement-
Play Games

設計思路:給UIView增加一個分類 所有的視圖都可以根據需要來進行紅點顯示 ...


設計思路:給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);
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Lazy Load 是一個用 JavaScript 編寫的 jQuery 插件. 它可以延遲載入長頁面中的圖片. 在瀏覽器可視區域外的圖片不會被載入, 直到用戶將頁面滾動到它們所在的位置. 這與圖片預載入的處理方式正好是相反的.在包含很多大圖片長頁面中延遲載入圖片可以加快頁面載入速度. 瀏覽器將會在 ...
  • 序 一個以js驗證表單的簡潔的註冊登錄頁面,不多說直接上圖 效果 主要文件 完整代碼 1 sign_up.html 註冊表單 2 log_in.html 登錄表單 3 common_form.css 表單css樣式 4 common_form_test.js 註冊登錄腳本 5 form_logo.p ...
  • 下載鏈接:http://www.bootcss.com/p/flat-ui/ 一、什麼是Flat UI? Flat UI 是一種漂亮的Boostrap主題。我們重新設計了它的很多組件,使得其看起來扁平化。 其中的大部分組件,都是用起來很簡單的。但是,為了確保其中一些組件外觀和我們想要的一樣,我們最終 ...
  • JQ選擇器與CSS/CSS3選擇器非常類似,對於學過CSS/CSS3的朋友來說可以是快速上手,下麵總結了比較常用的選擇器。 $('ul') ( 選取'ul'標簽 ) $('#one>span') $('[class]') ( 所有具有'class'屬性的元素 ) $('li[class]') ( 選 ...
  • 前些天在練習寫一個小例子的時候用到了定時器,發現在setInterval和setTimeout中傳入函數時,函數中的this會指向window對象,如下例: 從上述例子中可以看到setTimeout中函數內的this是指向了window對象,這是由於setTimeout()調用的代碼運行在與所在函數 ...
  • 1.獲取jQuery mobile 文件,訪問jQuerymobile網站下載 (貌似使用jquery mobile後,jquery會自動在網頁中添加一些class類,第一次知道的我是被嚇呆的!!) 2.需要使用數據屬性,數據屬性是HTML5引入的,以data-開頭 比如data-role可以用於定 ...
  • fullpage.js 是一個基於jquery 的插件,它能夠輕鬆的製作出高大上的全屏網站,主要功能有; 1.支持滑鼠滾動 2.支持前進後退和鍵盤控制 3.多個回調函數 4.支持 CSS3 動畫 5.可設置滾動寬度、背景顏色、滾動速度、迴圈選項、回調、文本對齊方式等等。 實現的原理: 1. 視窗大小 ...
  • (未給Fragment的佈局設置BackGound) 之前關於Android中Fragment的概念以及創建方式,我專門寫了一篇博文《Android中Fragment的兩種創建方式》,就如何創建Fragment混合佈局做了詳細的分析,今天就來詳細說道說道Fragment與宿主Activity之間是如 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...