對于iOS柱狀圖,不是有什么難度的效果, gayhub 上也有很多優(yōu)秀的第三方庫,比如 AAChartKit 、 XYPieChart 、 PNChart 、 Charts 等好多,不過這些類庫大多封裝的太厲害了,如果你的項目只是單純的幾個柱狀圖、那么使用這些庫其實挺費勁的(學(xué)習(xí)成本+項目大小),下面說說我的思路。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了平南免費建站歡迎大家使用!
iOS繪圖以及圖形處理主要使用的是 Core Graphics / QuartZ 2D ,這也是大部分人寫柱狀圖的方法,即使用 UIBezierPath 配合 Core Graphics 實現(xiàn)。我的思路是使用 UICollectionView ,不過使用 UICollectionView 實現(xiàn)柱狀圖,最好需求能滿足以下二點:
當(dāng)然,也并不是一定要滿足上面2點,接下來用幾個小Demo演示一下(注:Demo是Objective-C實現(xiàn))
這個是基本的效果,使用 UICollectionViewFlowLayout 布局,將 scrollDirection 設(shè)置為 UICollectionViewScrollDirectionHorizontal ;每個 cell 內(nèi)部有個綠色的 UIView ,根據(jù)數(shù)值調(diào)整這個綠色 UIView 的高度,就是圖上的效果了,其實核心就是 UICollectionViewFlowLayout ,后面幾個Demo也全是基于此。
這個效果是加了橫坐標(biāo)值和漸變Cell,每個柱狀圖重新出現(xiàn)屏幕上時,會動畫出現(xiàn),需要注意的是,漸變使用的是 CAGradientLayer ,但是對含有 CAGradientLayer 的view使用 frame 動畫,會造成漸變的卡頓和動畫的不流暢,所以這里是使用 CAGradientLayer 生成一張漸變圖,設(shè)置成柱狀圖柱子的背景即可。
這個效果是始終以中間的Cell為基準(zhǔn)顯示,點擊其他Cell也會自動滾到中心。因為 UICollectionView 繼承于 UIScrollView ,所以實現(xiàn)這種效果,關(guān)鍵在于兩個代理方法:
具體的原理,可以查看這篇優(yōu)秀的文章: UIScrollView 實踐經(jīng)驗
這個效果的目的是:有的需求是柱狀圖比較密集,當(dāng)手指滑動時又要求可以顯示出對應(yīng)柱子的值。其實實現(xiàn)起來很簡單,就是使用 touchesBegan:withEvent: 以及 touchesMoved:withEvent: 等幾個方法即可。
這個是有柱狀圖的同時,還有曲線圖,實現(xiàn)方法是在 UICollectionView 上面加了一個透明的 UIView ,同時通過此 UIView 的 hitTest:withEvent: 方法,將事件給到 UICollectionView ,再通過 UICollectionView 的代理方法,獲取界面上的Cell,繪制曲線到 UIView 上。需要注意的是, UICollectionView 的 visibleCells 方法,獲取到的Cell,順序不是界面上的順序,需要排序之后再使用。
其實通過 UIView 的 hitTest:withEvent: 方法,能做很多神奇的事情,大家可以自行研究。
這個沒啥,就是說明如果有復(fù)雜的坐標(biāo),也是可以實現(xiàn)的,這個Demo的做法是在 UICollectionView 下面有一個 UIView 專門繪制坐標(biāo)系。
這個其實跟柱狀圖沒有關(guān)系,大家都知道,安卓的刷新和iOS不一樣,下拉刷新分為 侵入式 和 非侵入式 ,對于iOS而言,由于 UIScrollView 的 Bounce 效果,所以使用侵入式下拉刷新,成了最好的選擇,但是iOS能否實現(xiàn)安卓那樣的非侵入式刷新呢?于是本Demo就簡單研究了一下,目前是存在bug的,樣式也粗糙,不過思路應(yīng)該沒有問題,提供給大家,可以研究研究:
至此,本文就沒了,其實本文沒啥技術(shù)含量,說白就是 UICollectionView 的使用,不過主要目的是給大家提供思路,具體需求還得具體分析。
本文Demo地址: GitHub
END。
我是小侯爺。
在帝都艱苦奮斗,白天是上班族,晚上是知識服務(wù)工作者。
如果讀完覺得有收獲的話,記得關(guān)注和點贊哦。
非要打賞的話,我也是不會拒絕的。
下面,就為大家推薦幾款熱門的可視化工具: VARCHART XGantt 甘特圖控件VARCHART XGantt讓您能夠以橫道圖、柱狀圖的形式來編輯、打印以及圖形化的表示您的數(shù)據(jù),它能在幾分鐘之內(nèi)實現(xiàn)您想要的甘特圖開發(fā),而且只需要通過簡單設(shè)計模式下的屬性頁...
單軌跡線條繪制設(shè)置線寬,動畫進可以通過 KeyPath 設(shè)置為 strokeEnd 進行渲染,達到動態(tài)渲染的目的
簡單繪制一個三角形,bezierPath 調(diào)用 closePath 時, 繪制的線路必須是閉合的 ,再調(diào)用 closePath 才能閉合,但是動畫設(shè)置為 strokeEnd 卻無效,需要重新設(shè)置動畫組合 CAAnimationGroup 才能添加渲染動畫
繪制如圖圖形
通過折線圖繪制,可以滿足部分柱狀圖的需求,同時添加延展動畫
網(wǎng)站欄目:ios開發(fā)柱狀圖,ios樹狀圖軟件
當(dāng)前鏈接:http://chinadenli.net/article18/dsshodp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、企業(yè)建站、動態(tài)網(wǎng)站、服務(wù)器托管、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)