备注:第一次按照本文的方法确实编译成功了,但是后面又试了几次,发下还是老问题,不知道为什么,所以,关于静态库的真机与模拟器的问题,直接百度下载吧,这是最省心的方法,还有一个需要注意的地方是Library Search Path,看看这里是不是引入了多个搜索路径,把多余的删去也许会有助于解决问题。
ZBarSDK下载地址:https://github.com/bmorton/ZBarSDK
http://zbar.sourceforge.net/iphone/index.html
#import "ZBarSDK.h"
#import "QRCodeGenerator.h"
@interface yxpViewController ()
@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 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];
}
}
lipo -create 原libzbar.a目录 -o 新生成libzbar.a目录
到新生成的目录下找到libzbar.a即可。
此部分转载自:http://www.cnblogs.com/ToDoToTry/p/3986366.html
http://blog.csdn.net/yxiaoping/article/details/39027079
http://blog.csdn.net/remote_roamer/article/details/7657845