1.下载ZBar
2.先准备一个扫描的页面,继承于 ZBarReaderViewController
@interface QRCodeVC : ZBarReaderViewController //扫一扫页面
3.在.m 的页面设置各种东西
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
for (UIView *temp in [self.view subviews]) {
for (UIButton *button in [temp subviews]) {
if ([button isKindOfClass:[UIButton class]]) {
[button removeFromSuperview];
}
}
for (UIToolbar *toolbar in [temp subviews]) {
if ([toolbar isKindOfClass:[UIToolbar class]]) {
[toolbar setHidden:YES];
[toolbar removeFromSuperview];
}
}
}
self.view.frame = [[UIScreen mainScreen] bounds];
if (IOS_7_AFTER) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
// //创建一个二维码框
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, WIDTH_OF_SCREEN, HEIGHT_OF_SCREEN)];
// imageView.image = [[UIImage imageNamed:@"more_qr"] stretchableImageWithLeftCapWidth:10 topCapHeight:10];
imageView.image = [UIImage imageNamed:@"more_qr"];
imageView.contentMode = UIViewContentModeScaleAspectFill;
[self.view addSubview:imageView];
[self.view addSubview:self.naviHeadView];
// AVCaptureDevice *currentDevice;
// [currentDevice setFlashMode:(AVCaptureFlashMode);
//
// currentDevice setFlashMode:AVCaptureFlashModeOff;
}
4.然后 在开始在一个VC里面设置跳进扫一扫页面
ps:导入 头文件和ZBar代理
在VC跳转扫一扫的地方设置
QRCodeVC *vc = [QRCodeVC new];
vc.readerDelegate = self;
//非全屏
vc.wantsFullScreenLayout = NO;
//隐藏底部控制按钮
vc.showsZBarControls = NO;
//关闭闪光灯(不设置的话 在暗的地方会自动开启)
vc.readerView.torchMode = 0;
//设置自己定义的界面
// [self setOverlayPickerView:reader];
ZBarImageScanner *scanner = vc.scanner;
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];
[self.navigationController pushViewController:vc animated:YES];
5.然后就在VC里面 设置扫一扫的代理方法
#pragma mark - 二维码 Delegate
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
break;
NSString *qrStr = symbol.data;
NSRange range = [qrStr rangeOfString:@"?z="];
if (range.location != NSNotFound && range.location == 19) {
NSString * str = [qrStr substringFromIndex:22];
UserHomePage * homeVC = [[UserHomePage alloc]initWithUserId:[str intValue]];
[self.navigationController pushViewController:homeVC animated:YES];
}
else
{
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:symbol.data]];
NSLog(@"self.scanInfo = %@",symbol.data );
}
}
其中 symbol. data 就是扫描到的 二维码连接