之前公司需求,要一个手势密码,Swift的手势密码库似乎好像没有,反正我没有找到,那就用OC的将就一下吧!用的冯成林哥哥的CoreLock。没有cocoapods,这个时代居然没有cocoapods,我估计是方便搬运工们自定义吧。其实我想吐槽一下,哥哥的代码很随意啊。。。
如果你就这样,叫我怎么受得了,果断翻译。
废话不多说了,其实刚开始就想翻译成Swift的,因为公司是用swift开发的。之前对siwft还不是很熟,所以就所以啦,你懂的!最近陆陆续续翻译了几个OC的小库,功力好像有点提升了。
这是原版 OC 小菜我的
RKNotificationHub RKNotificationHub.swift
VGParallaxHeader VGParallaxHeader.swift
还有一些就不贴出来了,有点麻烦有点累。其中还有一个自己写的轮播控件,跑题一下,轮播控件苦恼了我很久,Swift没有太好的轮播库,OC的有一个叫SDCycleScrollView还不错,应该很多人都知道。轮播其实在项目实践中有两个比较严重的问题,第一个是快速滑动,最后或者第一张会卡顿。如果你用的上面那个库,没有发现那个问题,那么请你打开爱奇艺客户端快速滑滑就知道了。第二个是你在将要滚动时切换视图会出现,这个别说你的没有,我测了淘宝的都会有,触发很简单,你把间隔时间设成1s,然后快速切换。
好像扯了半天的蛋,还没有进入正题。莫急,主角出场不都得铺垫铺垫一下吗?接下来,上动图
好像不错的样子哦。
我好像不知道说什么了。。。
首先肯定要感谢原著啊。原著UI使用了一些xib,个人其实是反感xib的。就是不大会呗,装什么b啊。刚开始翻译的时候还比较顺利,因为原著结构理得很清晰。翻着翻着问题就来了。OC的setter getter,我估计很多从OC转过来的同学都和我遇到了同样的问题。
原著是这样写的
在Swift中应该这样
Swift的存储属性是不需要setter 和getter方法的,只有计算属性才需要,如果不定义一个另外一个属性用于存储,直接setter getter会死循环的,具体原因我也不太懂,原谅我这个小菜。其他的好像也没有太多好说的了。
接下来是做cocoapods了,是照着这篇简书做的http://www.jianshu.com/p/98407f0c175b,前几步都挺顺利的,到了配置spec文件的s.source_files那一步,啊,深呼吸一下,折腾了好久。这里特别说一下
那么我的spec文件应该是这样的
因为此时已经在GesturePassword那个文件里了,所以再往里走一层就对了,如果Classes外面还有一个文件夹加aaa那么s.source_files后面应是 "aaa/Classes/**/*.swift",可能是我太蠢了,反正折腾了半天,后面**/*表示的是Classes文件夹的所有文件,包括文件夹。另外几种格式可以参考这个 https://github.com/CocoaPods/CocoaPods/issues/1259。
这是我做库遇到的第一个问题,第二个问题是打tag。
git tag 0.0.1
git push --tags
pod trunk push GesturePassword.podspec
这个几步都做好了,当然之前你还得注册你的账号,然后收到邮件验证才能继续上三步。
突然发现我的库有点问题,三下五除二改好了,commit到git远端,然后pod update一下用到我自己库的那个工程,咦?怎么pods里面的代码没有变化,看一下终端,pod update成功的啊,但是我明明修改了我的库,但是更新为什么不是绿色的?如果一个库是新装的,或者pod update那个库会是绿色的,删除是红色的,不知道大家有没有注意到。
就像这样
继续想一下,哪里错了啊,上网各种查,结果是你更新了你的库后,虽然远端git库你更新了,但是podspec文件还是关联的是你修改之前的那个版本。cocoapods的大概原理就是,cocoapods远端有一个podspec仓库,里面有所有第三个库的podspec文件,如果你用cocoapods管理第三方库,它会把所有的podspec文件拉下来,然后根据podfile文件里的库,找他们的podspec文件,下载对应的库。所以,更新库后又得重新上传podspec文件了。
以上才不多的我遇到的所有问题了,说的不对的地方还请指教。
最后附上GesturePassword
网友评论