iOS二维码限制区域识别、扫描动画

这篇博客介绍了如何在iOS应用中实现二维码的限制区域识别和扫描动画。通过使用AVFoundation框架,包括AVCaptureDevice、AVCaptureDeviceInput、AVCaptureSession、AVCaptureVideoPreviewLayer和AVCaptureMetadataOutput等组件,来创建并配置二维码扫描功能。同时,文章提供了项目代码的下载链接,包括CSDN和GitHub两个平台,方便读者直接获取和研究。
摘要由CSDN通过智能技术生成

AVCaptureDevice //初始化捕捉设备

AVCaptureDeviceInput //创建输入流 input

AVCaptureSession //创建会话

AVCaptureVideoPreviewLayer //预览图层

AVCaptureMetadataOutput //输出 二维码

AVCaptureVideoDataOutput //输出 视频流(随着屏幕刷新返回一个图片很快相当于视频)

session 关联设备、输入、输出、预览

效果图

直接上项目地址吧:现在csdn积分无法控制,直接把代码复制,可以直接复制走或者github下载即可

csdn:https://download.csdn.net/download/wangxiaoertedaye/11069772

gitHub:https://github.com/zxgiOS/erweima
代码:图片只能上下载代码库里有,或让美工制作

//
//  ScanCodeViewController.m
//  Productproject
//
//  Created by apple on 17/10/26.
//  Copyright © 2017年. All rights reserved.
//

#import "ScanCodeViewController.h"

#define kDeviceVersion [[UIDevice currentDevice].systemVersion floatValue]

#define kScreenWidth  [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
#define kNavbarHeight ((kDeviceVersion>=7.0)? 64 :44 )

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

#define kSCREEN_MAX_LENGTH (MAX(kScreenWidth, kScreenHeight))
#define kSCREEN_MIN_LENGTH (MIN(kScreenWidth, kScreenHeight))

#define IS_IPHONE4 (IS_IPHONE && kSCREEN_MAX_LENGTH < 568.0)
#define IS_IPHONE5 (IS_IPHONE && kSCREEN_MAX_LENGTH == 568.0)
#define IS_IPHONE6 (IS_IPHONE && kSCREEN_MAX_LENGTH == 667.0)
#define IS_IPHONE6P (IS_IPHONE && kSCREEN_MAX_LENGTH == 736.0)

@import AVFoundation;

@interface ScanCodeViewController ()<AVCaptureMetadataOutputObjectsDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate>{
    UILabel * introLab;
    BOOL isLightOn;
    UIButton *mineQRCode;
    UIButton *theLightBtn;
    BOOL hasTheVC;
    BOOL isFirst;
    BOOL upOrdown;
    int num;
    AVCaptureVideoPreviewLayer *preView;
    AVCaptureDevice *captureDevice;
    NSTimer * timer;
    
}

@property (nonatomic,strong) AVCaptureSession *session;
@property (nonatomic,weak) AVCaptureMetadataOutput *output;
@property (nonatomic,retain) UIImageView *lineIV;

@end

@implementation ScanCodeViewController

-(void)initUI{
    isFirst=YES;
    upOrdown = NO;
    num =0;
}
- (void)startSessionRightNow:(NSNotification*)notification {
    [self creatTimer];
    [_session startRunning];
}
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    if(isFirst)
    {
        [self creatTimer];
        [_session startRunning];
    }
    isFirst=NO;
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self deleteTimer];
    [[NSNotificationCenter defaultCenter]removeObserver:self name:@"startSession" object:nil];
}

- (void)viewDidDisappear
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值