啊神的技术博客

我的小博客,小智慧

二维码扫描识别

| 评论

 最近忙于工作,工作之余也在学习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^)/~

iOS 多语言版本的开发(三)

| 评论

写在前面

iOS 多语言版本的开发(二) 中我们实现了如何让用户自己去切换系统语言的功能,我们还写了Demo 以供辅助学习;但是,继以上两篇文章都是建立在项目刚刚启动或启动不久,项目中存在的中文字符串还不是很多,手动改起来也还可以接受; 那么问题来了,如果项目已经竣工或者已经迭代几个版本了,那该如何实现了?手动改起来也不太现实,耗时耗力不讨好的手动,在这里就不用考虑了。 不让考虑,是因为我有更简单快捷高效的方法,让我慢慢与您道来;

如何辨别项目中的中文字符串?

 既然要替换项目中使用到的中文字符串,那么前提就必须要先找到这些个字符串,然后将这些字符串,替换成我们定义的, 为了替换方便,可将这些字符串自身作为key, 这里不理解的不要紧,下面我还会讲到。 既然是辨别中文字符串,那也就是说在项目文件中进行匹配查找,说到匹配,那就需要正则表达式了,用正则表达式匹配Xcode中的使用的中文字符串,使用(@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?")\s* 即可, 打开你的Xcode 试试看,切记find 后面的选项要选择 Regular Expression, 默认选中的是Text, 如图

iOS 多语言版本的开发(二)

| 评论

题记

  iOS 多语言版本的开发(一) 中我们完成了让应用跟随系统语言进行切换,而用户自己却不能切换的功能,也基本上算是实现了多语言版本;可是,对于某些应用来说,实现跟随系统语言切换的同时, 也想要实现让用户自己选择应用语言版本的功能;针对这种情况,利用这篇文章来写写如何让用户自己切换应用语言版本;

语言文件存在的形式

想要实现用户自己手动切换语言版本,就先要了解语言文件在资源文件中存在的形式;

啊神多语言

如图中,不管是英语(en.lproj)、简体(zh-Hans.lproj)、还是繁体(zh-Hant.lproj)都是以.lproj 的文件夹形式存在, 所以当我们要切换语言的时候,其实也就是做到去取这些.lproj 文件夹中的ASLocalized.strings文件;