折線的繪制

項目中實現(xiàn)的效果需求

  • 展示效果圖:


    IMG_3424.PNG
  • 切換不同的按鈕繪制不同的折線圖
  • 當(dāng)手指左右滑動的時候,展示點的數(shù)據(jù)
  • 在零點,可能存在負(fù)數(shù),零點不是坐標(biāo)Y軸坐標(biāo)為1的時候
  • 每個點對應(yīng)一個氣泡視圖,并且展示它數(shù)據(jù)

實現(xiàn)的思路

  • 首先是處理數(shù)據(jù),讓整個數(shù)組中最大的值為Y軸的頂點,最小的值為Y軸的0點(可能包含負(fù)數(shù))
  • 因為繪制的點和左右上下都是有邊距的,所有是兩層視圖,一次是整體的白色視圖,一層是裝載貝塞爾曲線的白色視圖
  • 折線在每一次數(shù)據(jù)重新復(fù)制都要移除前面的點:
 // 刪除重新繪制
    if (_linePath) {
        [_linePath removeAllPoints];
    }
  • 而每一個圓圈使用的是CAShaperLayer的數(shù)組去裝載,去移除:
屏幕快照 2017-07-24 10.25.29.png
  • 繪制所有的點,是放在處理數(shù)組轉(zhuǎn)換成點的循環(huán)中繪制的:
屏幕快照 2017-07-24 10.25.40.png
  • UIView繼承的是UIResponder,所以主要的滑動實現(xiàn)依賴于下面的協(xié)議:
屏幕快照 2017-07-24 10.32.30.png
  • 協(xié)議中實現(xiàn)對氣泡視圖尖角的設(shè)置,項目實現(xiàn)是距離視圖20pt,但是在左右兩個極端的時候需要處理,避免尖角不在對應(yīng)的點上

氣泡視圖

  • 氣泡視圖建議不要覆寫drawRect,數(shù)據(jù)太多,不停的點擊一下子內(nèi)存就會瘋長,容易崩潰

  • 使用貝塞爾曲線來繪制,從尖角開始,使用貝塞爾曲線繪制圓角和直線就可以了

  • 因為這個折線視圖耦合在項目中了,所以就沒有單獨寫成demo了,如果有需要可以直接交流

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

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

  • 讀書筆記 好詞: 老弱病殘 黑霜 衣衫襤褸 嚴(yán)嚴(yán)實實 遙遙應(yīng)聲 灰失失 精猾 燈塔社 ...
    指語閱讀 1,082評論 0 0
  • 本視頻為activiti工作流的web流程設(shè)計器整合視頻教程 整合Acitiviti在線流程設(shè)計器(Activit...
    48abfca053b7閱讀 227評論 0 0
  • 說好的,我要把樹上的核桃 像堅硬的誓言一樣親手摘下來 說好的,我要把地里的土豆 往事一樣,親手洗盡它的塵埃 說好的...
    甘肅子溪閱讀 252評論 2 4
  • 秋天來了 今年的秋天和往年一樣如期而至。清晨上學(xué)的路上,看到行人已換上了厚實的秋衣,秋風(fēng)吹過,不禁會縮一下頭,...
    徐亞杰閱讀 283評論 0 1
  • 2017-10-27游療學(xué)習(xí)踐行打卡第3次 鳥飛、魚游、兒童游戲!透過游戲走進孩子的內(nèi)心世界! 我...
    傘下姑娘閱讀 206評論 0 0

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