【问题标题】:ZBarReaderView with custom size from storyboard moving after start is called调用启动后移动故事板的自定义大小的 ZBarReaderView
【发布时间】:2012-06-22 09:44:40
【问题描述】:

我有一个从故事板创建的 ZBarReaderView,大小为 216x20 像素,显示为大约 230x50 像素,因为 ZBarReaderView 并没有把它的大小看得太严重...... 这一切都很好,但是当我在那个 readerView 上调用 start 时,它的行为真的很奇怪。它启动了凸轮,但可能在半秒钟后,readerView 会放大一点,并且 readerView 内的相机图片向下移动,然后再次向上移动。 这并不可怕,但看起来有点糟糕。任何人都有任何想法可能导致此问题以及如何解决它?也许 sdk 对扫描仪的准备情况有某种隐藏的回调,我可以隐藏它,直到扫描仪说它准备好了,然后在 0.5 秒后显示扫描仪......

barcodeReader 是 ZBarReaderView 的 iboutlet,scannerLoading 是 uiactivityindicatorview 的 iboutlet,它在扫描仪加载之前一直处于动画状态。 这些是唯一从默认更改的设置,当然故事板中设置的框架除外。

[barcodeReader setReaderDelegate:self];
[barcodeReader setAllowsPinchZoom:false];
[barcodeReader start];

/* this works because [barcodeReader start] blocks ui updates until the scanner
   is running, i know it's not a good solution but since there doesn't seem to 
   be a callback or delegate method like scannerDidStart or something it seems 
   to be the only way... */
[scannerLoading stopAnimating]; 

感谢您的帮助!

【问题讨论】:

    标签: iphone ios barcode-scanner zbar-sdk


    【解决方案1】:

    我刚刚发布了一个报复性问题的答案:

    ZBarReadview with custom size from StoryBoard,but when it's called,it's size is not I set

    也许这个答案也能解决你的问题。

    简而言之:

    当使用 Interface Builder 或 Storyboard 创建视图并将 ZBarReaderView 分配给它时,您必须在相机图像的属性中选中“剪辑子视图”以保持视图的大小。

    【讨论】:

    • 谢谢我找到了问题,确实和情节提要有关。这就是发生的事情:我从 XIB 切换到情节提要,它出于某种原因设置了自动调整高度......
    【解决方案2】:

    只需添加另一个视图,使其成为cameraoverlayview,其中的图像视图具有所需的一部分为透明的图像。然后在按钮操作中`

    // ADD:展示一个从摄像头扫描的条形码阅读器

     ZBarReaderViewController *reader = [ZBarReaderViewController new];
    reader.readerDelegate = self;
    
    reader.supportedOrientationsMask = ZBarOrientationMaskAll;
    
    reader.sourceType=UIImagePickerControllerSourceTypeCamera;
    //reader.cameraDevice = UIImagePickerControllerCameraDeviceFront;
    
    reader.cameraOverlayView=cameraOverlay;
    
    if( [UIImagePickerController isCameraDeviceAvailable:                         UIImagePickerControllerCameraDeviceFront ])
    {
           reader.cameraDevice = UIImagePickerControllerCameraDeviceFront;
    }
    ZBarImageScanner *scanner = reader.scanner;
    
    reader.wantsFullScreenLayout = YES;
    // TODO: (optional) additional reader configuration here
    
    // EXAMPLE: disable rarely used I2/5 to improve performance
    
    [scanner setSymbology: ZBAR_I25
                   config: ZBAR_CFG_ENABLE
                       to: 0];
     reader.showsZBarControls = NO; 
    // present and release the controller
    

    [self presentModalViewController:reader animated:YES]; //[appdel.navigationController pushViewController:reader animated:YES];

    //[reader.view addSubview:collect];
    
    
    [reader release];add this and then also add 
    

    `- (void) imagePickerController: (UIImagePickerController*) 阅读器 didFinishPickingMediaWithInfo: (NSDictionary*) 信息 { // ADD:获取解码结果 识别结果 = [info objectForKey: ZBarReaderControllerResults]; ZBarSymbol *symbol = nil; for(结果中的符号) // 示例:只抓取第一个条形码 休息;

     [self rewards:symbol.data];
    

    } `

    作为一种方法。希望这能解决您的问题

    【讨论】:

    • 抱歉,我的问题可能写得不好,但我希望条形码扫描仪显示在另一个视图中,并且它的大小必须为 230x50 像素。这一切都完美无缺,看起来正是我想要的方式。条形码也被正确扫描。唯一的问题是扫描仪启动时来自相机的图像会抖动一次
    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多