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