如何以编程方式将视图设置为cameraoverlay视图

时间:2013-06-20 13:52:32

标签: objective-c cocoa-touch zbar-sdk zbar

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

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

reader.cameraOverlayView=self.myView;

我尝试添加另一个控件视图并添加了一个视图然后创建了一个tabbar并尝试了这个代码不起作用:

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

以编程方式创建对象对我来说很难找到在xcode中创建的对象的源代码,例如当我在xcode中创建自定义按钮时,我能找到生成的源代码吗?对于这个按钮,只需将其复制到我的程序中。

1 个答案:

答案 0 :(得分:1)

有几种方法可行

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

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

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

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

这涉及:

    视图控件中的
  • 会覆盖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];
}