追风之影

何以追风,以影追风,风过之处,在此留痕。

探索Xcode8编译为什么那么慢?

| 评论

背景

随着Xcode8swift3.0的正式到来,我开始着手将swift2.3的项目转到swift3(至于转换过程,这里不多做介绍,Xcode自带的转换工具,基本可以转换80%左右,剩下的自己慢慢调试即可。)但是,转到swift3只会,在用Xcode8编译,发现编译过程变得非常慢,哪怕打一个空格,都要重新编译很久。于是在网上查找解决办法,查找了半天各种方法全用,发现于事无补。
  有什么加一个HEADERMAP_USES_VFS = YES()这是地址,反正这个对我没用,感兴趣的话自己试试

针对这种情况,我就自己探索,出发点是排查哪些文件,哪些方法导致编译变慢?

探索Xcode编译,在哪些地方可以看到编译文件过程


通过多次编译查看,发现在Xcode左边栏,最后一个选项,是每次的编译运行等记录, 每行记录中都会有每次编译的文件编译记录。如下图

iOS 中的网络加密

| 评论

iOS 中的网络加密


引言:公司的接口一般会两种协议的,一种HTTP,一种HTTPS的,HTTP 只要请求,服务器就会响应,如果我们不对请求和响应做出加密处理,所有信息都是会被检测劫持到的,是很不安全的,客户端加密可以使用本文这套工具类进行处理。但是不论在任何时候,都应该将服务置于HTTPS上,因为它可以避免中间人攻击的问题,还自带了基于非对称密钥的加密通道。

HTTPS交互原理

简答说,HTTPS 就是 HTTP协议加了一层SSL协议的加密处理,SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA(如GlobalSign,wosign),在验证服务器身份后颁发,这是需要花钱滴,签发后的证书作为公钥一般放在服务器的根目录下,便于客户端请求返回给客户端,私钥在服务器的内部中心保存,用于解密公钥。

HTTPS 客户端与服务器交互过程:

1)客户端发送请求,服务器返回公钥给客户端;

2)客户端生成对称加密秘钥,用公钥对其进行加密后,返回给服务器;

3)服务器收到后,利用私钥解开得到对称加密秘钥,保存;

4)之后的交互都使用对称加密后的数据进行交互。

二维码扫描识别

| 评论

 最近忙于工作,工作之余也在学习swift,在github上开源了正在开发维护的swift项目模仿的百思不得姐;不过今天不是来介绍这个开源项目的,而是来给大家介绍一个很简单的功能之 iOS 二维码扫描识别;

我将该功能进行了简单的封装,只需要简单调用就可以实现;
封装文件:

QRCodeManager.h该文件是封装的二维码识别功能

调用方法:
    _qr = [[QRCodeManager alloc] init];
     _qr.delegate = self;
    [_qr configureManager:self.view];

服从协议QRCodeManagerDelegate实现代理方法:

- (void)qrCodeResult:(NSString *)result ,result即为扫描识别到的二维码信息了,就是这么简单。

Demo示例图

二维码扫描识别

Demo源码地址:

二维码扫描识别Demo下载地址

让UIImageView显示Gif图

| 评论

 各位同学们,这次给大家分享一个小工具,可以解决你在开发过程中,需要显示Gif图片的需求;由于太过于简单,我这里就不多说了;有需要的同学,请前往https://github.com/ashen-zhao/asGifImageView进行下载,不需要的同学也可以去Star,留着以后使用,最后,记得关注我哦,哈哈😄;

接下来,简单写一下如何使用该工具

示例图

啊神gifUIImageView

功能说明:

这是一个UIImageView的分类,可以让UIImageView支持显示本地Gif以及网络Gif图片。

使用说明

1.导入分类头文件 #import "UIImageView+ASGif.h"
2.调用
 a.显示本地gif图片
[self.gifImgV showGifImageWithData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"abc" ofType:@"gif"]]];
 b.显示网络gif图片
[self.gifImgV showGifImageWithURL:[NSURL URLWithString:@"http://ww1.sinaimg.cn/large/85cccab3gw1etdi67ue4eg208q064n50.gif"]];

iOS之接地气的移动支付

| 评论

iOS 移动支付之种类

iOS 端的移动支付,大概包括:支付宝支付、微信支付、银联卡支付、paypal支付,现在又多出一个Apple pay支付;

如何集成这些种类的支付方式

谈及如何集成这些支付方式,面对各种支付方式的SDK以及Demo写的详细的完美无缺,我还真不如还如何去写,这里我就接地气的写写,写的不好请勿喷哦☺!

支付宝支付

大致有以下步骤:

1.向支付宝申请, 与支付宝签约,获得商户PID(partner)和账号ID(seller)和私钥(privateKey)

注:*这一步,一般公司会搞定的,这里只是让你知道来龙去脉☺
  没有支付宝账号的同学,可以点击这里注册账号;
  已经有支付宝账号的同学点击这里申请移动支付
申请签约有个门槛比较难,就是不管你是个人还是企业,都需要营业执照,这点有点蛋疼,不过人家也是为了有质量的管理申请者嘛,可以理解,我这里没有营业执照,申请工作就死在了摇篮里,不过大致流程,我基本弄清楚了,不过作为开发者,这申请工作就不用多关心了,一般公司都会有申请过的,我这里写出来也就是让我们开发者也大概知道流程,而不是直接就是用,只知去向,不知来龙。
申请签约成功后,就可以查看 PID(partner)和账号ID(seller)和私钥(privateKey) ,查看地址点击这里 进行登录,点击下图中的查询PID和Key;
Pay

仿照微博、微信弹出ActionSheet样式

| 评论

 iOS 开发中,很多应用都会用到从屏幕底部弹出的UIActionSheet, 但是使用的过程中,总感觉系统的样式怪怪的,或者与自己开发的App的UI不是很协调,总之与自己的App搭配就一个字:丑。 说起ActionSheet样式,应该来看看主流的微博与微信是什么样式的;

微信 微博

看上去的确挺自然,一点也不像系统自带的,给人的感觉就是不协调,不协调的

简单实现双击tabBarItem刷新页面

| 评论

如何实现双击tabbarItem刷新页面?

 在网上寻找了一圈,众说纷纭,大差不差,而且基本上实现的不是双击才刷新,而是双击刷新一次后,只要再次单击就会刷新,这样很容易造成用户不小心点着,降低用户体验;见于这种局面,我花费了近一个小时,鼓捣出来了,只有双击的时候,才会去刷新页面(其实是伪双击,也就是单击两次,没有做两次单击时间间隔限制),废话不说了,直接上代码:


int i = 0;
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
    i++;
    UIViewController *tbSelectedController = tabBarController.selectedViewController;
    if ([tbSelectedController isEqual:viewController]) {
        if (currentIndex == 1 && tabBarController.selectedIndex == 1 && i % 2 != 0) {
            UINavigationController *nav = self.viewControllers[1];
            TestViewController *tVC = nav.viewControllers[0];
            [tVC doubleClickRefrsh];
        }
        currentIndex = tabBarController.selectedIndex;
        return NO;
    }
    i = 1;
    return YES;
}

这里是 UITabBarDelegate 的代理方法,实现的是双击第二个tabBarItem,则刷新其对应的第一个视图的节目数据;
至于i的存在,是为了记录是否是双击,我是根据i是偶数还是奇数来进行判断的;
就酱紫吧,不清楚的只管拿去用就行了,我就不多解释了,只有这几行代码,真没啥解释的了(^o^)/~