本帖最后由 Koson 于 2014-5-7 10:54 编辑
近日在学习一些关于如何模块化项目开发的东东(有兴趣的哥们可以去看看Using CocoaPods to Modularize a Big iOS App),也没有很多时间来论坛看看。鉴于近日又经常有人问题关于ZBar SDK进行二维码扫描的问题,那就花些时间再简略谈谈ZBar SDK吧。
1、除了ZBar SDK,还有其他的更好扫描二维码或者条形码的SDK吗?
有,个人目前只了解过ZBar 与 ZXing,但是比较推荐使用ZBar SDK,如果还有朋友知道其他更好的,欢迎推荐。(其实ios 7 SDK已经有关于QRCode的API可以使用了)
2、ZBar SDK有几种使用方式?
ZBar SDK有两种使用方式:1)直接调用 ZBarReaderViewController 打开一个扫描界面;2)ZBar SDK提供的可以嵌入其他视图的ZBarReaderView(建议使用该方式,高度可自定义界面);
3、一些可能会用到的设置(请不要问我怎么创建一个ZBarReaderView,因为我会告诉你 ZBar SDK官方网站)有哪些?
请设置readerDelegate,并实现它
[Objective-C] 纯文本查看 复制代码 readerView.readerDelegate = self;
设置关闭闪关灯,设置为0即可,你可以根据自己需要去调整
[Objective-C] 纯文本查看 复制代码 readerView.torchMode = 0;
设置扫描区域,经常有人会问我,就像微信那样子的,只有中间部分进行扫描(也确实会有这样子的需求发生),ZBar可以通过ZBarReaderView的scanCrop属性设置扫描区域,其默认值是CGRect(0, 0, 1, 1),也就是整个ZBarReaderView区域都是有效的扫描区域,计算区域需要稍稍思考一下,这样的问题是不能够帮助你的,自己思考思考吧
[Objective-C] 纯文本查看 复制代码 // 根据你的实际需要计算扫描区域
CGRect scanRect = CGRectMake(60, 180, 200, 200);
readerView.scanCrop =scanRect;
4、其他的一些使用请参见前面的两篇文章;
5、使用iPad进行扫描的时候,遇到的屏幕旋转问题?
如果你的iPad应用支持多个方向旋转,那么你应该也会遇到这个问题了。如果你是使用的ZbarReaderViewController,那么非常简单的:
[Objective-C] 纯文本查看 复制代码 ZBarReaderViewController *readerView = [[ZBarReaderViewController alloc] init];
readerView.supportedOrientationsMask = ZBarOrientationMaskAll;
如果你是使用ZBarReaderView,那么就稍稍麻烦一点点了,当然,也不会非常难了。ZbarReaderView camera默认的的支持方向是 UIInterfaceOrientationPortrait,为了保证你的ZBarReaderView的处于正确的方向,在ZBarReaderView初始化的时候设置如下:
[Objective-C] 纯文本查看 复制代码 ZBarReaderView *readerView = [[ZBarReaderView alloc] init];
[readerView
willRotateToInterfaceOrientation:
[[UIApplication sharedApplication] statusBarOrientation]
duration:
[[UIApplication sharedApplication]statusBarOrientationAnimationDuration]];
另外,为了确保在旋转屏幕的时候可以让ZbarReaderView正确的进行旋转,请看以下代码:
[Objective-C] 纯文本查看 复制代码 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return YES;
}
// 屏幕旋转
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration
{
[readerView willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
由于时间有限,可能讲的不是很全面,还有更多的细节部分请参见官方说明
|