Iphone 如何更改ZBar阅读器的框架?

Iphone 如何更改ZBar阅读器的框架?,iphone,ios,objective-c,barcode-scanner,zbar-sdk,Iphone,Ios,Objective C,Barcode Scanner,Zbar Sdk,好的,我正在使用ZBar SDK扫描iPhone应用程序中的条形码。我已经成功地实现了示例代码,但现在我想更改扫描仪视图的框架(即:屏幕大小的一半)。我尝试在viewDidLoad中设置读者视图的框架,但它会自行调整大小。 我知道这将是我刚刚错过的非常简单的事情之一,但任何帮助都将不胜感激。干杯 编辑:我成功了。这是我的密码: ZBarReaderViewController *reader = [ZBarReaderViewController new]; reader.readerDeleg

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

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

我算出来了。这就是我必须做的:

  • 将ZBarReaderViewController的视图添加为我自己视图的子视图(无论其框架是什么,都会填充整个视图)
  • 将ZBarReaderViewController的扫描大小更改为我想要的大小(注意:设置此帧与正常设置不同,请询问是否需要帮助)
  • 添加您希望对ZBarReaderViewController的覆盖视图可见的任何视图

  • 这是非常困难和不直观的,并打破了苹果的许多代码设计准则,但最终仍然是可行的。

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

    试试这个 它可能会帮助您:

    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
    view.

    最好的方法是在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]];
    

    请尝试使用ZBarReaderView,而不是使用ZBarReaderView控制器。这对我很有效,节省了我很多时间。希望对你有帮助

    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];
    

    不是那么简单。请参见上面的答案。ZBarReaderViewController是一个ViewController,而不是UIView。因此,不能简单地添加为子视图!你是怎么重设画面的?作为子视图添加似乎提供了一个空白的黑屏。您的代码与上面我的类似吗?如果没有,请尝试并告诉我您是如何操作的。@Dyldo42您可以将代码放在这里吗?我正在开发条形码阅读器应用程序,该应用程序使用zbar Sdk读取条形码并显示其数据。现在,客户希望自定义相机自动聚焦条形码时出现的方括号。如何像这样定制它???谢谢listTableView解决了什么问题?这是您在其他地方实例化的自定义视图吗?overlayView也是iVar吗?您发布的代码无效。你们能回答上面的评论吗?下面的工作对我来说,非常感谢你们这么多,但只有一个问题,条码并没有扫描仪并没有检测到,也并没有调用代理方法。