利用CAGradientLayer自定義顏色漸變view

說個故事: UI設計對大家說:“我們拒絕炒現飯!"。 然后就加了一波特效。 程序員猝。

#####效果分析: 1.水波動畫。 2.背景顏色漸變。

#####實現思路: 1.水波動畫,用CGMutablePathRef和三角函數畫出波浪線,讓后利用CADisplayLink將內容實時更新到屏幕上。

2.背景顏色漸變,利用漸變層CAGradientLayer將背景顏色由到深漸變,然后在利用定時器加三角函數實時變動起點和終點的顏色。

#####代碼邏輯: 代碼直接看demo吧DCGradientView 背景顏色漸變的核心代碼如下:

#####關于顏色漸變嘗試過的代碼:

 if (self.gradLayer == nil) {self.gradLayer = [CAGradientLayer layer];self.gradLayer.frame = self.bounds;}self.gradLayer.startPoint = CGPointMake(0, 0.8);self.gradLayer.endPoint = CGPointMake(1, 0.2);//create colors, important sectionNSMutableArray *colors = [NSMutableArray array];for (NSInteger deg = 0; deg <= 360; deg += 1) {UIColor *color;color = [UIColor colorWithHue:1.0 * deg / 360.0saturation:1.0brightness:1.0alpha:1.0];[colors addObject:(id)[color CGColor]];}[self.gradLayer setColors:[NSArray arrayWithArray:colors]];
復制代碼

效果如下:

可以通過改變for循環里面的區間值,從而達到某一顏色漸變的效果。但是選取的顏色始終達不到設計的要求,所以放棄。

還嘗試利用公式計算RGB。 Gradient = A + (B-A) / Step * N每個RGB都要利用這個公式計算,A是開始值,B是結束值,Step分成的總份數,N是當前的份數。

NSMutableArray *colors = [NSMutableArray array];for (int i = 1; i<17; i ++) {float r = 37 + (13-37)/16*i;float g = 191 + (150-191)/16*i;float b = 191 + (173-191)/16*i;UIColor *color = [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1];[colors addObject:(id)[color CGColor]];}for (int i = 1; i<17; i ++) {float r2 = 13 + (37-13)/16*i;float g2 = 150 + (191-150)/16*i;float b2 = 173 + (191-173)/16*i;UIColor *color2 = [UIColor colorWithRed:r2/255.0 green:g2/255.0 blue:b2/255.0 alpha:1];[colors addObject:(id)[color2 CGColor]];}復制代碼

顏色由淺到深,再由深到淺逐漸變化,所以對稱著添加了一遍。這實現的效果跟最終效果很接近,但是仔細看會發現,顏色會有一條條的感覺,顏色分布不是很細膩。所以也放棄。


DCGradientView

怎么覺得代碼清楚得連注釋都不用寫-_-``

轉載請注明出處 ? XDChang

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277691.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277691.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277691.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【筆記】spring定時器時間配置實例

"0/10 * * * * ?" 每10秒觸發 "0 0 12 * * ?" 每天中午12點觸發 "0 15 10 ? * *" 每天上午10:15觸發 "0 15 10 * * ?" 每天上午10:15觸發 "0 15 10 * * ? *" 每天上午10:15觸發 "0 15 10 * * ? 2005" 2…

java簡介和開發環境搭建

因為本人的Java一直以來水平都不怎么樣&#xff0c;大一的時候只考了60分。所以在臨近畢業的時候&#xff0c;我選擇了重修Java&#xff0c;這些天正在慢慢的回顧Java&#xff0c;會到博客里面記錄一些Java的知識&#xff0c;不為有多少人來看&#xff0c;只希望自己有所收獲。…

第六章 函數和宏定義實驗(2)

C程序設計實驗報告 實驗項目&#xff1a; 1、利用復化梯形公式計算定積分 2、計算Ackerman函數 3、編寫計算x的y次冪的遞歸函數getpower(int x,int y)&#xff0c;并在主程序中實現輸入輸出 4、編寫計算學生年齡的遞歸函數 5、編寫遞歸函數實現Ackman函數 姓名&#xff1a;王錦…

將控件保存為圖片

原文:將控件保存為圖片將控件保存為圖片 周銀輝 這里分別提供win form 和 wpf 兩種方式 對于.net 2.0 我們可以簡單地利用 BitBlt 函數來實現&#xff0c;非常簡單&#xff0c;代碼如下&#xff1a; publicstaticclassControlToImageConverter { privateconstInt32 S…

Linux基礎命令---get獲取ftp文件

get 使用lftp登錄ftp服務器之后&#xff0c;可以使用get指令從服務器獲取文件。 1、語法 get [-E] [-a] [-c] [-O base] rfile [-o lfile] 2、選項列表 選項 說明 -o 指定輸出文件的名字&#xff0c;不指定則使用原來的名字 -c 如果失敗&#xff0c;持續獲取 -E 獲取…

Unity3D學習筆記之二資源導入以及工程管理

本次教程&#xff0c;我們來建立自己的一個工程并導入模型&#xff0c;對模型進行處理。特別說明&#xff1a;這系列教程參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》&#xff0c;本博客中采用的模型和方法均來源于此。這是我瀏覽過好多教程后覺得講…

關于cocos creator換裝功能的實踐與思考

2019獨角獸企業重金招聘Python工程師標準>>> 最近在做一個基于cocos creator的微信小游戲&#xff0c;其中一個主要的功能是給角色進行換裝。先來說下開發環境&#xff1a; cocos creator1.9.3spine 在官方的文檔中只有設置皮膚的接口&#xff0c;實際上是存在可以部…

pl/sql查詢表數據,報錯ORA-03115:不支持的網絡數據類型或表示法

今天測試人員遇到一個問題&#xff1a;pl/sql查詢表數據&#xff0c;報錯ORA-03115&#xff1a;不支持的網絡數據類型或表示法 我在plsql上查詢這張表是沒有問題的&#xff0c;去看了那張表&#xff0c;發現有個字段類型是binary_double&#xff0c; 查資料發現這是oracle10才出…

抖店一件代發實操,干貨滿滿!

我是電商珠珠 沒有貨源的新手&#xff0c;在店鋪剛開始的時候可以搞無貨源模式&#xff0c;也就是一件代發&#xff0c;去搬運別人店鋪的商品到自己店鋪&#xff0c;再去利用信息差去賺取差價。 很多人不知道具體要怎么做&#xff0c;今天我就來給大家講一講。 一、入駐 入…

Unity3D學習筆記之三Prefab組件的使用

本次教程&#xff0c;我們來創建一個簡單的Prefab組件。教程參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》。說到Prefab&#xff0c;中文翻譯為預設體&#xff0c;在Unity官方的書本《Unity4.X從入門到精通》中的解釋是&#xff1a;可以理解為是一個…

JavaScript之閉包

不少開發人員總是搞不清匿名函數和閉包這兩個概念&#xff0c;因此經常混用。閉包是指有權訪問另一個函數作用域中的變量的函數。創建閉包的常見方式&#xff0c;就是在一個函數內部創建另一個函數 --《JavaScript高級程序設計》 轉載于:https://www.cnblogs.com/songsongblue/…

【躍遷之路】【522天】程序員高效學習方法論探索系列(實驗階段279-2018.07.12)...

(躍遷之路)專欄 【躍遷之路】獎勵金計劃正式開始 從2018.7.1起&#xff0c;【躍遷之路】獎勵金計劃正式起航&#xff0c;從今以后&#xff0c;每月1日&#xff0c;我會將自己個人上月收入的1%計入【躍遷之路】獎勵金池&#xff0c;積累到足夠金額后&#xff0c;將適時用于獎勵那…

迷茫在路口——致我的2014

今天是2015年一月一日&#xff0c;2014年已經過去了。這意味著再過六個月整&#xff0c;我就要大學畢業&#xff0c;開始為自己的未來拼搏。這一年&#xff0c;我過的充實且迷茫。說2014充實&#xff0c;是因為我從寒假結束到有一個寒假的到來&#xff0c;幾乎沒有怎么閑下來&a…

Codeforces 173E Camping Groups 線段樹

Camping Groups 我們先計算出&#xff0c; 每個點當leader所能掌控的最多人數。 然后我們把詢問離線&#xff0c; 丟到responsibility最大的那個地方去。 然后從大到小往線段樹里加人&#xff0c; 加入完之后處理掉當前的詢問。 如果強制在線的話就只能樹套樹啦。 #include<…

tomcat閃退解決方案

在這幾天&#xff0c;遇到一個Tomcat啟動閃退的問題&#xff0c;通過查閱各種資料&#xff0c;算是完美解決。在此分享給朋友們。 首先&#xff0c;確定你的問題在哪里 1.查詢錯誤&#xff1a;winR 輸入cmd&#xff0c;進入一般處理程序。通過cd 找到你Tomcat的bin文件夾&#…

《古劍奇譚2》詳細測評心得

期待已久的《古劍奇譚2》。仔仔細細的玩下來給我的感覺還是不錯的。燭龍也不愧是國產單機的良心公司了&#xff0c;回合制的戰斗方式改成了即時戰斗類。 的確&#xff0c;國產動作類的游戲經驗目前等于零。《古劍2》一改以往國產網游的作風跳出了回合制的圈子實屬不易&#xff…

LeetCode 581. 最短無序連續子數組(Shortest Unsorted Continuous Subarray)

581. 最短無序連續子數組581. Shortest Unsorted Continuous Subarray 題目描述 給定一個整型數組&#xff0c;你需要尋找一個連續的子數組&#xff0c;如果對這個子數組進行升序排序&#xff0c;那么整個數組都會變為升序排序。 你找到的子數組應是最短的&#xff0c;請輸出它…

NFS4文件鎖機制探秘

2019獨角獸企業重金招聘Python工程師標準>>> 簡介 NFS4實現“租賃鎖”。每個鎖擁有一樣的“租賃期”。客戶端的讀寫操作將刷新“租賃期”。租賃期到期后&#xff0c;鎖將被服務器釋放。NFS4通過下述“模型”實現對鎖的管理&#xff1a; 1) 清晰地劃分客戶端和服務器…

Stay Hungry Stay Foolish——網絡學習平臺分享

從1月24號回家也有一陣子了&#xff0c;今天已經是31號&#xff0c;這一個周的中心思想就是一個字&#xff0c;玩。 學生一但遠離學校&#xff0c;就會碰到許多學習的阻力&#xff0c;有來自外界的&#xff0c;家里有活要干&#xff0c;有親戚要訪&#xff0c;有同學邀約&…

linux_check

linux_check echo "********CPU****************" echo 總核數 物理CPU個數 X 每顆物理CPU的核數 echo " 總邏輯CPU數 物理CPU個數 X 每顆物理CPU的核數 X 超線程數"echo 查看物理CPU個數 cat /proc/cpuinfo| grep "physical id"| sort| un…