当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS中使用ZBar扫描二维码自定义扫描界面功能

iOS中使用ZBar扫描二维码自定义扫描界面功能

2019年07月24日  | 移动技术网IT编程  | 我要评论

美眉的禁小游戏,pagefile.sys是什么文件,香蕉女孩

之前在android中使用过zxing识别二维码,zxing也有对应的ios版本,经过了解,zbar也是一个常用的二维码识别软件,并分别提供了ios和android的sdk可供使用,最终我选择了zbar进行二维码识别,它的注释清晰,便于使用。

zbar为我们提供了两种使用方式,一种是直接调用zbar提供的zbarreaderviewcontroller打开一个扫描界面,另一种方式是使用zbar提供的可以嵌在其他视图中的zbarreaderview,实际项目中我们更可能会使用第二种方式,这可以让我们对界面做更多的定制。

zbar使用起来也非常简单,将zbarsdk导入项目,在需要使用zbar的文件中导入zbarsdk.h头文件即可

#pragma mark 初始化扫描
- (void)initscan
{
  readview = [zbarreaderview new];
  readview.backgroundcolor = [uicolor clearcolor];
  readview.frame = cgrectmake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
  readview.readerdelegate = self;
  readview.allowspinchzoom = yes;//使用手势变焦
  readview.trackingcolor = [uicolor redcolor];
  readview.showsfps = no;// 显示帧率 yes 显示 no 不显示
  //readview.scancrop = cgrectmake(0, 0, 1, 1);//将被扫描的图像的区域
  uiimage *hbimage=[uiimage imagenamed:@"pick_bg.png"];
  scanzomeback=[[uiimageview alloc] initwithimage:hbimage];
  //添加一个背景图片
  cgrect mimagerect=cgrectmake((readview.frame.size.width-200)/2.0, (readview.frame.size.height-200)/2.0, 200, 200);
  [scanzomeback setframe:mimagerect];
  readview.scancrop = [self getscancrop:mimagerect readerviewbounds:readview.bounds];//将被扫描的图像的区域
  [readview addsubview:scanzomeback];
  [readview addsubview:readlineview];
  [self.view addsubview:readview];
  [readview start];
}
#pragma mark 获取扫描区域
-(cgrect)getscancrop:(cgrect)rect readerviewbounds:(cgrect)readerviewbounds
{
  cgfloat x,y,width,height;
  x = rect.origin.x / readerviewbounds.size.width;
  y = rect.origin.y / readerviewbounds.size.height;
  width = rect.size.width / readerviewbounds.size.width;
  height = rect.size.height / readerviewbounds.size.height;
  return cgrectmake(x, y, width, height);
}
#pragma mark 扫描动画
-(void)loopdrawline
{
  cgrect rect = cgrectmake(scanzomeback.frame.origin.x, scanzomeback.frame.origin.y, scanzomeback.frame.size.width, 2);
  if (readlineview) {
    [readlineview removefromsuperview];
  }
  readlineview = [[uiimageview alloc] initwithframe:rect];
  [readlineview setimage:[uiimage imagenamed:@"line.png"]];
  [uiview animatewithduration:3.0
             delay: 0.0
            options: uiviewanimationoptioncurveeasein
           animations:^{
             //修改fream的代码写在这里
             readlineview.frame =cgrectmake(scanzomeback.frame.origin.x, scanzomeback.frame.origin.y+scanzomeback.frame.size.height, scanzomeback.frame.size.width, 2);
             [readlineview setanimationrepeatcount:0];
           }
           completion:^(bool finished){
             if (!is_anmotion) {
               [self loopdrawline];
             }
           }];
  [readview addsubview:readlineview];
}
#pragma mark 获取扫描结果
- (void)readerview:(zbarreaderview *)readerview didreadsymbols:(zbarsymbolset *)symbols fromimage:(uiimage *)image
{
  // 得到扫描的条码内容
  const zbar_symbol_t *symbol = zbar_symbol_set_first_symbol(symbols.zbarsymbolset);
  nsstring *symbolstr = [nsstring stringwithutf8string: zbar_symbol_get_data(symbol)];
  if (zbar_symbol_get_type(symbol) == zbar_qrcode) {
    // 是否qr二维码
  }
  for (zbarsymbol *symbol in symbols) {
    [stxtfield settext:symbol.data];
    break;
  }
  [readerview stop];
  [readerview removefromsuperview];
}

github地址:https://github.com/zbar/zbar

以上所述是小编给大家介绍的ios中使用zbar扫描二维码自定义扫描界面,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

  • ios uicollectionview实现横向滚动

    现在使用卡片效果的app很多,之前公司让实现一种卡片效果,就写了一篇关于实现卡片的文章。文章最后附有demo实现上我选择了使用uicollectionview ... [阅读全文]
  • iOS UICollectionView实现横向滑动

    本文实例为大家分享了ios uicollectionview实现横向滑动的具体代码,供大家参考,具体内容如下uicollectionview的横向滚动,目前我使... [阅读全文]
  • iOS13适配深色模式(Dark Mode)的实现

    iOS13适配深色模式(Dark Mode)的实现

    好像大概也许是一年前, mac os系统发布了深色模式外观, 看着挺刺激, 时至今日用着也还挺爽的终于, 随着iphone11等新手机的发售, ios 13系统... [阅读全文]
  • ios 使用xcode11 新建项目工程的步骤详解

    ios 使用xcode11 新建项目工程的步骤详解

    xcode11新建项目工程,新增了scenedelegate这个类,转而将原appdelegate负责的对ui生命周期的处理担子接了过来。故此可以理解为:ios... [阅读全文]
  • iOS实现转盘效果

    本文实例为大家分享了ios实现转盘效果的具体代码,供大家参考,具体内容如下demo下载地址: ios转盘效果功能:实现了常用的ios转盘效果,轮盘抽奖效果的实现... [阅读全文]
  • iOS开发实现转盘功能

    本文实例为大家分享了ios实现转盘功能的具体代码,供大家参考,具体内容如下今天给同学们讲解一下一个转盘选号的功能,直接上代码直接看viewcontroller#... [阅读全文]
  • iOS实现轮盘动态效果

    本文实例为大家分享了ios实现轮盘动态效果的具体代码,供大家参考,具体内容如下一个常用的绘图,主要用来打分之类的动画,效果如下。主要是ios的绘图和动画,本来想... [阅读全文]
  • iOS实现九宫格连线手势解锁

    本文实例为大家分享了ios实现九宫格连线手势解锁的具体代码,供大家参考,具体内容如下demo下载地址:效果图:核心代码://// clockview.m// 手... [阅读全文]
  • iOS实现卡片堆叠效果

    本文实例为大家分享了ios实现卡片堆叠效果的具体代码,供大家参考,具体内容如下如图,这就是最终效果。去年安卓5.0发布的时候,当我看到安卓全新的material... [阅读全文]
  • iOS利用余弦函数实现卡片浏览工具

    iOS利用余弦函数实现卡片浏览工具

    本文实例为大家分享了ios利用余弦函数实现卡片浏览工具的具体代码,供大家参考,具体内容如下一、实现效果通过拖拽屏幕实现卡片移动,左右两侧的卡片随着拖动变小,中间... [阅读全文]
验证码:
移动技术网