iOS如何重新打包静态库,使得模拟器和真机都可以使用(以ZBarSDK为例)
ZBarSDK下载地址:https://github.com/bmorton/ZBarSDK
1、创建工程
2、添加framework
3、添加代码
#import "ZBarSDK.h" #import "QRCodeGenerator.h" @interface yxpViewController ()<ZBarReaderDelegate,UIAlertViewDelegate > @end @implementation yxpViewController @synthesize imageview; @synthesize text; @synthesize label; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [text resignFirstResponder]; } - (void)viewDidLoad { [super viewDidLoad]; self.title=@"二维码编辑器"; } //扫描二维码 - (IBAction)button:(id)sender { /*扫描二维码部分: 导入ZBarSDK文件并引入一下框架 AVFoundation.framework CoreMedia.framework CoreVideo.framework QuartzCore.framework libiconv.dylib 引入头文件#import “ZBarSDK.h” 即可使用 当找到条形码时,会执行代理方法 - (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info 最后读取并显示了条形码的图片和内容。*/ ZBarReaderViewController *reader = [ZBarReaderViewController new]; reader.readerDelegate = self; reader.supportedOrientationsMask = ZBarOrientationMaskAll; ZBarImageScanner *scanner = reader.scanner; [scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0]; //[self presentModalViewController: reader animated: YES]; [self presentViewController:reader animated:YES completion:nil]; } - (IBAction)button2:(id)sender { /*字符转二维码 导入 libqrencode文件 引入头文件#import "QRCodeGenerator.h" 即可使用 */ imageview.image = [QRCodeGenerator qrImageForString:text.text imageSize:imageview.bounds.size.width]; } - (IBAction)Responder:(id)sender { //键盘释放 [text resignFirstResponder]; } //保存照片到本地 - (IBAction)saveImage:(id)sender { if(imageview.image!=nil) { UIImage *aImage = imageview.image; UIImageWriteToSavedPhotosAlbum(aImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); } } - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo { if (error != NULL) { UIAlertView *photoSave = [[UIAlertView alloc] initWithTitle:@"保存出错" message:[NSString stringWithFormat:@"%@",error] delegate:nil cancelButtonTitle:nil otherButtonTitles:nil]; [photoSave show]; photoSave = nil; }else { UIAlertView *photoSave = [[UIAlertView alloc] initWithTitle:@"保存成功" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil]; [photoSave show]; //程序自动完成点击buttonIndex的button 并dismiss 整个alertView的操作 [photoSave dismissWithClickedButtonIndex:0 animated:YES]; photoSave = nil; } } - (void)imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info { id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults]; ZBarSymbol *symbol = nil; for(symbol in results) break; imageview.image = [info objectForKey: UIImagePickerControllerOriginalImage]; //[reader dismissModalViewControllerAnimated: YES]; [reader dismissViewControllerAnimated:YES completion:nil]; //判断是否包含 头'http:' NSString *regex = @"http+:[^\\s]*"; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; //判断是否包含 头'ssid:' NSString *ssid = @"ssid+:[^\\s]*";; NSPredicate *ssidPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",ssid]; label.text = symbol.data ; if ([predicate evaluateWithObject:label.text]) { UIAlertView * alert = [[UIAlertView alloc]initWithTitle:nil message:@"It will use the browser to this URL。" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:@"Ok", nil]; alert.delegate = self; alert.tag=1; [alert show]; } else if([ssidPre evaluateWithObject:label.text]){ NSArray *arr = [label.text componentsSeparatedByString:@";"]; NSArray * arrInfoHead = [[arr objectAtIndex:0] componentsSeparatedByString:@":"]; NSArray * arrInfoFoot = [[arr objectAtIndex:1] componentsSeparatedByString:@":"]; label.text= [NSString stringWithFormat:@"ssid: %@ \n password:%@", [arrInfoHead objectAtIndex:1],[arrInfoFoot objectAtIndex:1]]; UIAlertView * alert = [[UIAlertView alloc]initWithTitle:label.text message:@"The password is copied to the clipboard , it will be redirected to the network settings interface" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:@"Ok", nil]; alert.delegate = self; alert.tag=2; [alert show]; UIPasteboard *pasteboard=[UIPasteboard generalPasteboard]; // 然后,可以使用如下代码来把一个字符串放置到剪贴板上: pasteboard.string = [arrInfoFoot objectAtIndex:1]; } }
4、编译运行
1、添加target
2、添加ZBarSDK
3、设置Architectures和valid Architectures
4、设置Schema
5、编译
6、生成静态库
lipo -create 原libzbar.a目录 -o 新生成libzbar.a目录到新生成的目录下找到libzbar.a即可。
7、重新导入libzbar.a
8、可能遇到的部分问题
此部分转载自:http://www.cnblogs.com/ToDoToTry/p/3986366.html
9、参考文档:
http://blog.csdn.net/yxiaoping/article/details/39027079
http://blog.csdn.net/remote_roamer/article/details/7657845
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。