好的,我正在使用ZBar SDK在我的iPhone应用程序中扫描条形码。我已成功实现了示例代码,但现在我想更改扫描器视图的框架(即:屏幕尺寸的一半)。我已尝试在viewDidLoad中设置阅读器视图的框架,但它会自行调整大小。 我知道这将是我错过的那些非常简单的事情之一,但任何帮助都会非常感激。干杯。
编辑:我得到了它的工作。这是我的代码:ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
ZBarImageScanner *scanner = reader.scanner;
[reader setShowsZBarControls:NO];
[reader.readerView setScanCrop:(CGRect){ { 0, 0 }, { 0.43, 1 } }];
[reader.readerView start];
[self.view addSubview:reader.view];
overlayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[listTableView setFrame:CGRectMake(0, 208, 320, 208)];
[overlayView addSubview:listTableView];
[self.view addSubview:overlayView];
答案 0 :(得分:7)
尝试使用ZBarReaderView,而不是使用ZBarReaderViewController。这对我有用,节省了我很多时间。希望它能帮到你。
ZBarReaderView*reader = [ZBarReaderView new];
ZBarImageScanner * scanner = [ZBarImageScanner new];
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];
reader = [reader initWithImageScanner:scanner];
reader.readerDelegate = self;
reader.tracksSymbols = YES;
reader.frame = CGRectMake(20, 38, 283, 347);
reader.torchMode = 0;
dispatch_async(dispatch_get_main_queue(), ^{[reader start];});
[self.view addSubview:reader];
答案 1 :(得分:2)
我解决了这个问题。这就是我必须要做的事情:
这非常困难且不直观,打破了Apple的许多代码设计指南,但最终仍然可行。
答案 2 :(得分:0)
您可以创建自己的视图和视图控制器,并将ZBarReaderViewController的视图添加为您自己视图的子视图;
答案 3 :(得分:0)
修改扫描视图控制器属性的另一种方法是导入ZBarSDK项目并自行编译和链接,而不是使用SDK的二进制版本。然后,您可以对您需要的视图控制器进行任何更改(请记住他们的许可证......应该首先阅读它)
答案 4 :(得分:0)
试试这个 它可能对你有所帮助:
ZBarReaderViewController *reader= [ZBarReaderViewController new];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMaskAll;
ZBarImageScanner *scanner = reader.scanner;
// TODO: (optional) additional reader configuration here
// reader.showsCameraControls = NO; // for UIImagePickerController
reader.showsZBarControls = NO;
// EXAMPLE: disable rarely used I2/5 to improve performance
[scanner setSymbology:ZBAR_I25|ZBAR_QRCODE
config: ZBAR_CFG_ENABLE
to: 0];
[reader viewDidLoad];
[reader viewWillAppear:NO];
[reader viewDidAppear:NO];
[self.viewScan addSubview:reader.view];
此处,self.viewScan
是您当前控制器的任何视图。
现在扫描区域self.viewScan
查看。
答案 5 :(得分:0)
最好的方法是将它放在sampleView中:
UIView *view = [self sampleView];
CALayer *viewLayer = [view layer];
[viewLayer setMasksToBounds:YES];
CGRect bounds = [view bounds];
[reader.view.layer setFrame:bounds];
[viewLayer insertSublayer:reader.view.layer below:[[viewLayer sublayers] objectAtIndex:0]];