Fork小知识
先说Fork操作,日常开发中用到的第三方库,绝大部分情况都是够用的。但有时候还是需要根据业务进行一些定制。
自定义第三方库有两个方法。1,把库拖进项目文件。2,Fork。第一种方法,可以说非常差,很可能会和当前项目中的资源存在文件冲突,引用动态库更是麻烦。Fork,完美。
Fork的操作的操作很简单。
1.fork github项目。生产一个自己的项目。
2.clone该项目到本地。
3.修改并push。
2,3步就是普通git操作。
第三方库中使用Xib的注意事项
加载Xib
加载Xib分两步。第一步,获取bundle ID。第二步,加载Xib。
坑-获取bundle ID
获取bundle ID是一个坑,在开发中库的bundle ID和cocoapods中库的bundle ID不是同一个。
比如我要fork的第三方stripe-ios,你在开发中,你修改的库的bundle ID叫com.stripe.stripe-ios
,而你在cocoapods中访问的stripe库的ID叫 org.cocoapods.Stripe
。
结论: 用[NSBundle bundleForClass:]
这个API可以自动获取该Class所在的bundle ID。不需要你再手动处理。
(PS:这里还避免了另外一个坑,[NSBundle bundleWithIdentifier:@"com.stripe.stripe-ios"]
通过这个API获取的bundle,并未被加载到项目中。直接用会存在崩溃。还需要你在mainbundle中主动获取一次bundle,bundle才会被load。这个坑牵扯到bundle加载机制。)
坑-Xib资源
你写完了Xib,在本地测试完ok了,git push。结果在真实项目中一拉,crash了。
因为cocoapods配置的原因,xib资源并未被拉到本地。
podspec配置文件。必须把xib也包含进文件描述。

Git中的代码更新,能更清楚看到区别。一定要把资源描述进去。

私货
这里再夹带一点私货。本人最近做的自定义Stripe样式的代码(和Stripe安卓的一样)。有需要的同学可以直接fork。可以省下很多时间。样式如下图。
