Swift 模仿 QQ tabbarItem 的未讀消息效果

先看效果

借鑒了這篇博客
原博客使用的 OC 寫的
在其基礎(chǔ)上增加了一些功能, 比如能隨著移動, size 也隨著改變

animate.gif

如何實現(xiàn)

  • 如上圖, 效果是由一個大圓和一個小圓, 以及大圓触机、小圓之間的不規(guī)則圖形組成的
  • 控件繼承了 UIButton, 給控件添加 pan 手勢, 當(dāng)開始移動的時候, 在原位置添加一個小圓昨寞, 然后通過下圖的方法使用貝塞爾曲線實現(xiàn)中間的不規(guī)則圖形


    0068uRu1gw1etgs1ssj09j30yg0qmaed.jpg

中間路徑實現(xiàn)代碼

//MARK: - 中間圖形路徑
    private func path() -> UIBezierPath {
        let center1 = smallCircleView!.center
        let r1 = smallCircleView!.layer.cornerRadius
        let center2 = self.center
        let r2 = self.layer.cornerRadius
        let d = pointToPointDistanceWithPoint1(center1, point2: center2)
        let x1 = center1.x
        let x2 = center2.x
        let y1 = center1.y
        let y2 = center2.y
        let cosθ = (y2 - y1) / d
        let sinθ = (x2 - x1) / d
        
        let A = CGPointMake(x1 - r1 * cosθ, y1 + r1 * sinθ)
        let B = CGPointMake(x1 + r1 * cosθ, y1 - r1 * sinθ)
        let C = CGPointMake(x2 + r2 * cosθ, y2 - r2 * sinθ)
        let D = CGPointMake(x2 - r2 * cosθ, y2 + r2 * sinθ)
        let O = CGPointMake(A.x + d / 2 * sinθ, A.y + d / 2 * cosθ)
        let P = CGPointMake(B.x + d / 2 * sinθ, B.y + d / 2 * cosθ)
        
        let path = UIBezierPath()
        path.moveToPoint(A)
        path.addLineToPoint(B)
        path.addQuadCurveToPoint(C, controlPoint: P)
        path.addLineToPoint(D)
        path.addQuadCurveToPoint(A, controlPoint: O)
        
        return path
    }

//MARK: - 兩點之間距離
    private func pointToPointDistanceWithPoint1(point1: CGPoint, point2: CGPoint) ->CGFloat {
        let xDistance = point2.x - point1.x
        let yDistance = point2.y - point1.y
        return sqrt(xDistance * xDistance + yDistance * yDistance)
    }

demo 地址

請點擊這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市膘融,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌祭玉,老刑警劉巖氧映,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脱货,居然都是意外死亡岛都,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門振峻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臼疫,“玉大人,你說我怎么就攤上這事扣孟√痰蹋” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鸽斟。 經(jīng)常有香客問我拔创,道長,這世上最難降的妖魔是什么富蓄? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任剩燥,我火速辦了婚禮,結(jié)果婚禮上立倍,老公的妹妹穿的比我還像新娘灭红。我一直安慰自己,他們只是感情好口注,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布变擒。 她就那樣靜靜地躺著,像睡著了一般寝志。 火紅的嫁衣襯著肌膚如雪赁项。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天澈段,我揣著相機與錄音悠菜,去河邊找鬼。 笑死败富,一個胖子當(dāng)著我的面吹牛悔醋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播兽叮,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼芬骄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鹦聪?” 一聲冷哼從身側(cè)響起账阻,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泽本,沒想到半個月后淘太,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡规丽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年蒲牧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赌莺。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡冰抢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出艘狭,到底是詐尸還是另有隱情挎扰,我是刑警寧澤翠订,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站遵倦,受9級特大地震影響尽超,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜骇吭,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一橙弱、第九天 我趴在偏房一處隱蔽的房頂上張望歧寺。 院中可真熱鬧燥狰,春花似錦、人聲如沸斜筐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顷链。三九已至目代,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嗤练,已是汗流浹背榛了。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留煞抬,地道東北人霜大。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像革答,于是被迫代替她去往敵國和親战坤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,777評論 25 707
  • Any vs AnyObject 將項目里的 AnyObject 轉(zhuǎn)成 Any 在swift3可能大家會有點困惑残拐,...
    Q14閱讀 1,266評論 0 2
  • 球球生活系列寫到此途茫,已完全是窮兵黷武,黔驢技窮了溪食。糾結(jié)著是否還要繼續(xù)囊卜。 球球糾結(jié)的時侯特別少,我就在想我倆區(qū)別在于...
    小二梅閱讀 355評論 6 3
  • 今天上午我們寫了123456789错沃,還學(xué)了口算題卡边败,我們還學(xué)了科學(xué),我們拿了兩張紙往中間吹一口氣捎废,紙就會并攏笑窜。我們...
    張雪涵閱讀 177評論 0 1
  • 一、今天登疗,我豐盛排截,我能夠給自己徹底放假一天嫌蚤,遇到調(diào)整不過來的事情我能夠去面對處理,我擁有面對的勇氣~ 二断傲、今天脱吱,我...
    仰望天空的魚兒_jiating閱讀 125評論 0 0