iOS開發(fā)中經(jīng)常遇到這種情況肩榕,你使用的第三方庫不能完全滿足自己項目需要刚陡,只能修改源碼來解決。
我們以前的解決辦法是株汉,添加到項目中直接修改源碼筐乳。這樣就有一個問題,不能和源庫同步乔妈,當作者更新后你不能(pod update)更新蝙云,否則自己原來的修改就被沖掉了。所以只能選擇不更新路召,或者更新后重新修改源碼勃刨。
當?shù)谌綆旄聲r如何同步更新?Git的Fork功能解決了這種問題优训,當你fork別人的開源代碼后朵你,你可以隨意的修改。當然你對自己的修改滿意還可以請求合并到(pull request)原作者項目中去揣非。
今天具體講解如何在Github上Fork別人的代碼,進行二次開發(fā)躲因。下面以iOS-Charts為例早敬,上一篇文章中我對這個開源庫做了介紹。
1.首先你要有自己的Github賬號
2.進入https://github.com/danielgindi/Charts 你要Fork項目的首頁點擊右上角Fork
3.到自己項目列表就可以看到剛剛Fork的項目了
現(xiàn)在你就可以當做自己的項目大脉,隨意的更改了搞监。如果修改完之后你想和原來庫合并,貢獻自己的代碼镰矿,就點擊自己項目中的“New Pull Request”請求合并琐驴。作者同意后就可以在項目中看到自己貢獻的代碼了。
下面講解本文的重點秤标,如何修改源碼滿足自己項目需求绝淡。修改時注意一下幾點:
1.改源碼首先當然是讀懂源碼了,讀懂后才知道從何下手苍姜。
2.查看源碼時一開始不止如何下手牢酵,對于一些UI控件我的解決方式是采用“注釋法”,先把不知道的代碼注釋掉然后運行查看效果衙猪,通過對比界面可以簡單直接的看到代碼在操控那里馍乙。
3.修改時要考慮如何最小的改動滿足自己需求布近,可以嘗試添加子類或者分類的形式解決。
4.實在沒辦法只能修改源碼了丝格,修改源碼的地方最好做上標記撑瞧,方便自己查看、修改显蝌。
舉個例子季蚂,我們想要修改點擊Charts高亮時的高亮線的形式,改之前的效果如下:
我們想要隱藏掉水平高亮線琅束,只顯示垂直高亮線扭屁,如下圖所示:
通過查看源碼我們可以知道LineChartDateSet的屬性drawVerticalHighlightIndicatorEnabled是控制是否顯示垂直高亮線的,我們簡單推理涩禀,通過搜索這個屬性我們應該能找到如何繪制高亮線的代碼料滥。
通過全局搜索 drawVerticalHighlightIndicatorEnabled結果如下圖:
并沒有找到繪制高亮線的代碼,查看屬性定義的地方發(fā)現(xiàn)drawVerticalHighlightIndicatorEnabled是存儲屬性艾船,還有一個對應的計算性屬性isVerticalHighlightIndicatorEnabled葵腹,我們接下來全局搜索isVerticalHighlightIndicatorEnabled ,結果如下:
通過注意查看,我們可以確定LineScatterCandleRadarChartRenderer.swift有繪制高亮線的地方屿岂,如下圖:
可以發(fā)現(xiàn)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