首页 > 代码库 > ZXingObjC二维码扫描
ZXingObjC二维码扫描
#import "QRScanViewController.h"#import "AppDelegate.h"@interface QRScanViewController (){ BOOL infoShowing; UIAlertView *alert; BOOL upToDown; int num; UIImageView *lineImageView; NSTimer *timer;}@end@implementation QRScanViewController@synthesize capture;@synthesize scanRectView;@synthesize backImageView;- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization [self initViewFrame]; } return self;}- (void)viewDidLoad{ [super viewDidLoad]; self.capture = [[ZXCapture alloc] init]; self.capture.camera = self.capture.back; self.capture.focusMode = AVCaptureFocusModeContinuousAutoFocus; self.capture.rotation = 90.0f; self.capture.layer.frame = self.view.bounds; [self.view.layer addSublayer:self.capture.layer]; [self.view bringSubviewToFront:self.backImageView]; [self.view bringSubviewToFront:self.scanRectView]; lineImageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"scan_line.png"]]; lineImageView.frame = CGRectMake(self.scanRectView.frame.origin.x, self.scanRectView.frame.origin.y, self.scanRectView.frame.size.width, 4); [self.view addSubview:lineImageView];}- (void)lineAnimation{ if (!([self isViewLoaded] && [self.view superview])) { return; } if (upToDown) { num++; float temp = 0.0; if (4*num > self.scanRectView.frame.size.height-4) { temp = self.scanRectView.frame.size.height+self.scanRectView.frame.origin.y; upToDown = NO; }else{ temp = self.scanRectView.frame.origin.y + 4*num; } lineImageView.frame = CGRectMake(self.scanRectView.frame.origin.x, temp, self.scanRectView.frame.size.width, 4); }else{ num--; float temp = 0.0; if (num <= 0) { temp = self.scanRectView.frame.origin.y; upToDown = YES; }else{ temp = self.scanRectView.frame.origin.y + 4*num; } lineImageView.frame = CGRectMake(self.scanRectView.frame.origin.x, temp, self.scanRectView.frame.size.width, 4); }}- (void)viewDidAppear:(BOOL)animated{ if (timer) { [timer invalidate]; timer = nil; } upToDown = YES; num = 0; lineImageView.frame = CGRectMake(self.scanRectView.frame.origin.x, self.scanRectView.frame.origin.y, self.scanRectView.frame.size.width, 4); timer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(lineAnimation) userInfo:nil repeats:YES];}- (void)stopTimer{ if (timer) { [timer invalidate]; timer = nil; }}- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; self.capture.delegate = self; self.capture.layer.frame = self.view.bounds;// CGAffineTransform captureSizeTransform = CGAffineTransformMakeScale(320 / self.view.frame.size.width, 480 / self.view.frame.size.height);// self.capture.scanRect = CGRectApplyAffineTransform(self.scanRectView.frame, captureSizeTransform); if (viewer.device == DEVICE_IPAD || viewer.device == DEVICE_IPAD3) { [self showaCapture]; }else{ self.capture.rotation = 90.0f; CGAffineTransform transform = CGAffineTransformMakeRotation(0); [self.capture setTransform:transform]; CGRect f = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height); self.view.layer.frame=f; self.capture.layer.frame = f; }}- (void)showaCapture{ CGAffineTransform transform; if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) { self.capture.rotation = 180.0f; transform = CGAffineTransformMakeRotation(M_PI/2); } else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) { self.capture.rotation = 0.0f; transform = CGAffineTransformMakeRotation(-M_PI/2); } else if (self.interfaceOrientation == UIInterfaceOrientationPortrait) { self.capture.rotation = 90.0f; transform = CGAffineTransformMakeRotation(0); } else if (self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { self.capture.rotation = 270.0f; transform = CGAffineTransformMakeRotation(M_PI); } [self.capture setTransform:transform]; CGRect f = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height); self.view.layer.frame=f; self.capture.layer.frame = f;}#pragma mark - ZXCaptureDelegate Methods//- (void)captureCameraIsReady:(ZXCapture *)capture//{////}////- (void)captureSize:(ZXCapture *)capture width:(NSNumber *)width height:(NSNumber *)height//{// //}- (void)captureResult:(ZXCapture *)capture result:(ZXResult *)result{ if (!result) { return; } NSLog(@"结果是什么= %@",result.text); NSString *formatString = [self barcodeFormatToString:result.barcodeFormat]; if (![formatString isEqualToString:@"QR Code"]) { return; } NSString *display = [NSString stringWithFormat:@"Scanned!\n\nFormat: %@\n\nContents:\n%@", formatString, result.text]; NSLog(@"二维码是%@",display);// [decodedLabel performSelectorOnMainThread:@selector(setText:) withObject:display waitUntilDone:YES]; AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); if (infoShowing) { return; } if (alert) { [alert release]; alert = nil; } alert = [[UIAlertView alloc] initWithTitle:@"信息" message:result.text delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; alert.delegate = self; [alert show]; infoShowing = YES;}#pragma mark - Private Methods- (NSString *)barcodeFormatToString:(ZXBarcodeFormat)format { switch (format) { case kBarcodeFormatAztec: return @"Aztec"; case kBarcodeFormatCodabar: return @"CODABAR"; case kBarcodeFormatCode39: return @"Code 39"; case kBarcodeFormatCode93: return @"Code 93"; case kBarcodeFormatCode128: return @"Code 128"; case kBarcodeFormatDataMatrix: return @"Data Matrix"; case kBarcodeFormatEan8: return @"EAN-8"; case kBarcodeFormatEan13: return @"EAN-13"; case kBarcodeFormatITF: return @"ITF"; case kBarcodeFormatPDF417: return @"PDF417"; case kBarcodeFormatQRCode: return @"QR Code"; case kBarcodeFormatRSS14: return @"RSS 14"; case kBarcodeFormatRSSExpanded: return @"RSS Expanded"; case kBarcodeFormatUPCA: return @"UPCA"; case kBarcodeFormatUPCE: return @"UPCE"; case kBarcodeFormatUPCEANExtension: return @"UPC/EAN extension"; default: return @"Unknown"; }}//- (BOOL)shouldAutorotate//{// return YES;//}////- (BOOL)shouldAutomaticallyForwardRotationMethods//{// return YES;//}////- (NSUInteger)supportedInterfaceOrientations//{// return UIInterfaceOrientationMaskAll;//}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}- (void)rotated{ [self setViewFrame];}- (void)setViewFrame{}- (void)initViewFrame{}#pragma mark - UIAlertViewDelegate- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ if (buttonIndex != alert.cancelButtonIndex) { } infoShowing = NO;}- (void)dealloc{ [super dealloc];}/*#pragma mark - Navigation@end
ZXingObjC二维码扫描
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。