1

我需要创建一个cameraoverlay视图(添加ZBar sdk reader),我的问题是如何以编程方式创建我不需要的所有对象。现在我以编程方式创建所有对象,然后将它们添加到myView,并myView用作cameraoverlay视图。

[self.myView addSubview: myImage];
[self.myView addSubview: self.mylabel];
[self.myView addSubview: myButton];

reader.cameraOverlayView=self.myView;

我尝试添加另一个控件视图并向其添加一个视图,然后制作了一个标签栏并尝试了这个不起作用的代码:

TestViewController *test=[[TestViewController alloc]init];
reader.cameraOverlayView=test.testView;

以编程方式制作对象对我来说很难找到在 中创建的对象的源代码xcode,例如,当我在其中创建自定义按钮时,xcode我是否可以找到为该按钮生成的源代码并将其复制到我的程序中。

4

1 回答 1

1

有几种方法可行

  • 在代码中创建自定义容器视图。添加 zbar 视图和任何自定义视图(顶部的扫描仪图形等)。这是我最近做的。

  • 创建一个基于 xib 的视图,并在其中包含 zbar 视图。请参阅“对象”组件。

  • 从 xibs 加载自定义视图并添加它们。

如果您有时间,我建议您投资学习如何以编程方式创建视图。

这涉及:

  • 在您的视图控制器中覆盖 loadView 方法。

  • 返回包含子视图的 UIView 的自定义子类。其中包括 zbar 视图和您的叠加层。

  • 了解如何在 UIView 上使用 layoutSubviews 方法。提示设置您的子视图相对于父视图边界的框架。

Github 上有大量自定义组件。查看 DCSwitch 或 CMPoptip,或阅读对 ManiacDev 的贡献。

* 根据要求 - 成功扫描后添加子视图 *

- (void)readerView:(ZBarReaderView*)view didReadSymbols:(ZBarSymbolSet*)symbols fromImage:(UIImage*)image
{
    for (ZBarSymbol* symbol in symbols)
    {
        [self presentScannedOverlay];
        [_scanInProgressOverlay setAnimating:NO];
        [_readerView stop];
        [_delegate didScanPayload:symbol.data];
        break;
    }
}


- (void)presentScannedOverlay
{
    //Be sure to override layoutSubviews, so that you can position the view below, 
    //relative to its parent. . if you already know the size of the parent, just replace
    //CGRectZero with CGRectMake(some values)
    _scannedOverlayView = [MyOverlayView alloc] initWithFrame:CGRectZero]; 
    [self addSubView:scannedOverlayView];
}
于 2013-06-20T14:32:39.427 回答