Github上Fork代碼,及源碼修改

iOS開發中常常遇到這種狀況,你使用的第三方庫不能徹底知足本身項目須要,只能修改源碼來解決。
咱們之前的解決辦法是,添加到項目中直接修改源碼。這樣就有一個問題,不能和源庫同步,看成者更新後你不能(pod update)更新,不然本身原來的修改就被沖掉了。因此只能選擇不更新,或者更新後從新修改源碼。git

當第三方庫更新時如何同步更新?Git的Fork功能解決了這種問題,當你fork別人的開源代碼後,你能夠隨意的修改。固然你對本身的修改滿意還能夠請求合併到(pull request)原做者項目中去。github

今天具體講解如何在Github上Fork別人的代碼,進行二次開發。下面以iOS-Charts爲例,上一篇文章中我對這個開源庫作了介紹。swift

1.首先你要有本身的Github帳號
2.進入https://github.com/danielgindi/Charts 你要Fork項目的首頁點擊右上角Fork
3.到本身項目列表就能夠看到剛剛Fork的項目了ui

如今你就能夠當作本身的項目,隨意的更改了。若是修改完以後你想和原來庫合併,貢獻本身的代碼,就點擊本身項目中的「New Pull Request」請求合併。做者贊成後就能夠在項目中看到本身貢獻的代碼了。code

下面講解本文的重點,如何修改源碼知足本身項目需求。修改時注意一下幾點:blog

1.改源碼首先固然是讀懂源碼了,讀懂後才知道從何下手。
2.查看源碼時一開始不止如何下手,對於一些UI控件個人解決方式是採用「註釋法」,先把不知道的代碼註釋掉而後運行查看效果,經過對比界面能夠簡單直接的看到代碼在操控那裏。
3.修改時要考慮如何最小的改動知足本身需求,能夠嘗試添加子類或者分類的形式解決。
4.實在沒辦法只能修改源碼了,修改源碼的地方最好作上標記,方便本身查看、修改。

舉個例子,咱們想要修改點擊Charts高亮時的高亮線的形式,改以前的效果以下:圖片


咱們想要隱藏掉水平高亮線,只顯示垂直高亮線,以下圖所示:開發

經過查看源碼咱們能夠知道LineChartDateSet的屬性drawVerticalHighlightIndicatorEnabled是控制是否顯示垂直高亮線的,咱們簡單推理,經過搜索這個屬性咱們應該能找到如何繪製高亮線的代碼。get

經過全局搜索 drawVerticalHighlightIndicatorEnabled結果以下圖:同步

並無找到繪製高亮線的代碼,查看屬性定義的地方發現drawVerticalHighlightIndicatorEnabled是存儲屬性,還有一個對應的計算性屬性isVerticalHighlightIndicatorEnabled,咱們接下來全局搜索isVerticalHighlightIndicatorEnabled ,結果以下:

經過注意查看,咱們能夠肯定LineScatterCandleRadarChartRenderer.swift有繪製高亮線的地方,以下圖:

能夠發現35-38行是控制如何繪製豎直高亮線的代碼,咱們註釋掉,

換成使用圖片來繪製的代碼,修改爲以下代碼(前提準備一張高亮圖」highlight_line」):

CGContextSaveGState(context);
//得到高亮線圖片
let lineImage = NSUIImage(named: "highlight_line")
//繪製
lineImage?.drawInRect(CGRectMake(point.x-5.0/2.0, viewPortHandler.contentTop, 5, viewPortHandler.contentBottom - viewPortHandler.contentTop))

CGContextRestoreGState( context );

運行看下效果輕鬆搞定。

文章轉載自:lvesli

相關文章
相關標籤/搜索