QQ粘性效果

QQ粘性效果

實(shí)現(xiàn)思路:

1.自定義大圓控件(UIButton)可以顯示背景圖片,和文字

2.讓大圓控件隨著手指移動(dòng)而移動(dòng)

  • 注意不能根據(jù)形變修改大圓的位置,只能通過center,因?yàn)槿潭夹枰玫街行狞c(diǎn)計(jì)算。

3.在拖動(dòng)的時(shí)候,添加一個(gè)小圓控件在原來大圓控件的位置

  • 注意這個(gè)小圓控件并不會(huì)隨著手指移動(dòng)而移動(dòng),因此應(yīng)該添加到父控件上
  • 一開始設(shè)置中心點(diǎn)和尺寸和大圓控件一樣。
  • 隨著大圓拖動(dòng),小圓半徑不斷減少,可以根據(jù)兩個(gè)圓心的距離,隨便生成一段比例,隨著圓心距離增加,圓心半徑不斷減少。
        // 計(jì)算小圓半徑:隨機(jī)搞個(gè)比例,隨著圓心距離增加,圓心半徑不斷減少。
        CGFloat smallRadius = _circleR2 - d / 10;
  • 每次小圓改變,需要重新設(shè)置小圓的尺寸和圓角半徑。

4.粘性效果

  • 就是在兩圓之間繪制一個(gè)形變矩形,描述形變矩形路徑。
  • 這里大致介紹下計(jì)算思路,不需要太糾結(jié)
  • 這里需要用到CAShapeLayer,可以根據(jù)一個(gè)路徑,生成一個(gè)圖層,展示出來。把形變圖層添加到父控件并且顯示在小圓圖層下就OK了。因?yàn)樗杏?jì)算出來的點(diǎn),都是基于父控件。
  • 注意:這里不能用繪圖,因?yàn)槔L圖內(nèi)容只要超過當(dāng)前控件尺寸就不會(huì)顯示,但是當(dāng)前形變矩形必須顯示在控件之外

5.粘性業(yè)務(wù)邏輯處理

  • 當(dāng)圓心距離超過100,就不需要描述形變矩形(并且把之前的形變矩形移除父層),小圓也需要隱藏。

  • 沒有超過100,則相反。

6.手指停止拖動(dòng)業(yè)務(wù)邏輯

  • 判斷下圓心是否超過100,超過就播放爆炸效果,添加個(gè)UIImageView在當(dāng)前控件上,并且需要取消控制器view的自動(dòng)布局。
    // 取消Autoresizing轉(zhuǎn)自動(dòng)布局
    self.view.translatesAutoresizingMaskIntoConstraints = NO;

  • 沒有超過,就還原。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 效果:拖動(dòng)信息提示數(shù)目按鈕,感覺像是在拉伸按鈕,當(dāng)拖動(dòng)到一定范圍,按鈕(小圓被抽出),松開手小圓會(huì)爆炸。如果抽出小...
    翻這個(gè)墻閱讀 469評(píng)論 0 0
  • 動(dòng)畫分析 當(dāng)前控件既可以顯示圖片,有可以顯示文字,那么我們就可以通過按鈕來最為當(dāng)前的控件. 當(dāng)拖動(dòng)控件,當(dāng)前控件尺...
    亡靈詛咒閱讀 546評(píng)論 0 2
  • 制作步驟 1.自定義按鈕控件 設(shè)置背景顏色,設(shè)置layer的cornerRadius屬性,添加手勢(shì),重寫setHi...
    沖破繭縛閱讀 1,404評(píng)論 1 7
  • 圖片折疊效果 1.如何制作圖片折疊效果? `把一張圖片分成兩部分顯示,上面一部分,下面一部分,折疊上面部分的內(nèi)容。...
    Hevin_Chen閱讀 568評(píng)論 0 1
  • Core Animation Core Animation,中文翻譯為核心動(dòng)畫,它是一組非常強(qiáng)大的動(dòng)畫處理API,...
    45b645c5912e閱讀 3,154評(píng)論 0 21

友情鏈接更多精彩內(nèi)容