6

好的,所以我正在使用 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];
4

6 回答 6

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];
于 2014-03-13T11:22:46.073 回答
2

我解决了。这是我必须做的:

  1. 将 ZBarReaderViewController 的视图添加为我自己的视图的子视图(无论它的框架是什么,它都会令人讨厌地填充整个视图)。
  2. 将 ZBarReaderViewController 的扫描大小更改为我想要的任何大小(注意:设置此框架与正常设置一个不同,只需询问您是否需要帮助)。
  3. 将您希望看到的任何视图添加到 ZBarReaderViewController 的覆盖视图。

这是非常困难和不直观的,并且违反了 Apple 的许多代码设计准则,但最终仍然是可行的。

于 2011-07-11T01:55:46.277 回答
0

您可以创建自己的视图和视图控制器,并将 ZBarReaderViewController 的视图添加为您自己的视图的子视图;

于 2011-07-07T07:24:46.700 回答
0

修改扫描视图控制器属性的另一种方法是导入ZBarSDK项目并自行编译链接,而不是使用SDK的二进制版本。然后,您可以对所需的视图控制器进行任何更改(请记住他们的许可证......可能应该先阅读)

于 2012-06-10T02:59:00.783 回答
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查看。

于 2013-01-02T07:12:03.970 回答
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]];
于 2013-03-20T19:35:47.090 回答