qq消息小圓點(diǎn)拖拽動(dòng)畫

前言

為什么要做個(gè)動(dòng)畫? 通常來(lái)說(shuō),一個(gè)app的消息小標(biāo)識(shí),只是給用戶知道你有多少條未讀信息,是沒(méi)有用戶交互的,用戶必須要去查看全部未讀信息后才會(huì)消失,這只是針對(duì)于一種用戶,如果對(duì)于另一種用戶(不想點(diǎn)擊未讀消息,小標(biāo)識(shí)又要給我消失)那就不好使了,這就大大影響了用戶體驗(yàn)了。

明白了為什么要做這個(gè)交互,那么我們可以在此基礎(chǔ)上在思考,如何去優(yōu)化這種交互,毫無(wú)疑問(wèn),第一反應(yīng)就是動(dòng)畫。沒(méi)錯(cuò),動(dòng)畫是交互中最能提高用戶體驗(yàn)的方式。

效果圖:


這個(gè)動(dòng)畫的核心部分就是圓拖拽過(guò)程離開(kāi)始點(diǎn)的軌跡要如何去計(jì)算,接下來(lái)我會(huì)放一張圖分析是如何計(jì)算這段軌跡,如圖。

小圓到大圓的軌跡就是BPCDOA這個(gè)填充不規(guī)則圖形

AD和BC這兩段是一個(gè)拋物線貝塞爾曲線,為此我們要計(jì)算出曲率O,P的位置。

通過(guò)勾股定義,以及相似三角形角度的知識(shí),可以得出以上角度都是相同的a。之后算出各點(diǎn)的位置,并用貝塞爾曲線每個(gè)點(diǎn)相連接。


注意:

初始化屬性要寫在layoutSubViews里,在這個(gè)方法里才能得到真正的frame

手勢(shì)滑動(dòng),隨著曲線不斷改變,超過(guò)最大范圍曲線消失,當(dāng)手勢(shì)消失,按鈕沒(méi)有超過(guò)最大范圍就利用彈性動(dòng)畫來(lái)復(fù)原位置,反之消除。

最后,按鈕消失的爆炸動(dòng)畫是利用gif來(lái)實(shí)現(xiàn)的


總結(jié):動(dòng)畫之美靠我們程序猿去發(fā)掘,用心學(xué)動(dòng)畫,發(fā)散自己的想象空間,只要你敢想,才能有更炫酷的動(dòng)畫特效。。。

源碼下載鏈接github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,252評(píng)論 4 61
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,532評(píng)論 25 708
  • 正式上班已經(jīng)一個(gè)星期,現(xiàn)世中與理想差距太大,一周心情終歸處在郁悶中,我不得不重新調(diào)整心情,規(guī)劃未來(lái)。 當(dāng)時(shí)簽合同時(shí)...
    追月亮的猩猩閱讀 162評(píng)論 0 0
  • 【同讀一本書】2016.4.13 --------《59秒快樂(lè)》 正文: 如果壓抑想法并不是我們要尋找的快樂(lè)藥方,...
    秦圓圓閱讀 355評(píng)論 0 1
  • 夏季汽車保養(yǎng)常識(shí) 在很多人的觀念中,保養(yǎng)無(wú)非是更換三濾、機(jī)油等消耗品。其實(shí),在車輛的運(yùn)行過(guò)程中,很多部件都在不斷地...
    車的世界吧閱讀 231評(píng)論 0 0