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