【问题标题】:add a uibarbutton for ZBarReaderViewController为 ZBarReaderViewController 添加一个 uibarbutton
【发布时间】:2014-09-04 09:06:28
【问题描述】:

我正在研究 ZBarReader,而我目前所拥有的是

ZBarReaderViewController *controller = [[ZBarReaderViewController alloc] init];
controller.navigationController.navigationBarHidden = NO;
// Add Edit button to the right and handle click event UIBarButtonItem *manualButton = [[UIBarButtonItem alloc] initWithTitle:@"Manual" style:UIBarButtonItemStyleBordered target:self action:@selector(EditMode:)];
[controller.navigationItem setRightBarButtonItem:manualButton];
controller.readerDelegate = self;
[self presentModalViewController:controller animated:YES];

我的问题是,我们可以在上面做这样的事情吗:设置工具栏可见并在其上为 ZBarReaderViewController 添加按钮。

【问题讨论】:

    标签: iphone


    【解决方案1】:

    是的,您首先为您的 ZBarReaderViewController 设置了一些属性

     self.zReader.showsCameraControls = NO;
     self.zReader.showsZBarControls=NO;
    

    然后你必须设置你的自定义cameraOverlayView,例如这设置一个带有左键的UIToolBar来关闭选择器和一个UISwitch来控制flashMode:

     self.zReader.cameraOverlayView=[self setOverlayPickerView];
    
    - (UIView *)setOverlayPickerView{
        UIView *v=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
        [v setBackgroundColor:[UIColor clearColor]];
        UIToolbar *myToolBar = [[UIToolbar alloc] init];
        UIBarButtonItem *backButton=[[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:self action:@selector(dismissOverlayView:)];
        UISwitch *sw=[[UISwitch alloc] init];
        [sw setOn:NO];
        UIBarButtonItem *switchButton=[[UIBarButtonItem alloc] initWithCustomView:sw];
        UIBarButtonItem *fixed=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];  
        [sw addTarget:self action:@selector(handleSwitchFlash:) forControlEvents:UIControlEventValueChanged];
        [myToolBar setItems:[NSArray arrayWithObjects:backButton,fixed,switchButton,nil]];
        [myToolBar setBarStyle:UIBarStyleDefault];
        CGRect toolBarFrame;
        toolBarFrame = CGRectMake(0, 436, 320, 44);
        [myToolBar setFrame:toolBarFrame];
        [v addSubview:myToolBar];
        return  v;
    }
    
    - (void)dismissOverlayView:(id)sender{ 
        [self dismissModalViewControllerAnimated: YES];
    }
    

    【讨论】:

    • 它确实对我有帮助。我试过了,它奏效了。你知道我们如何从 nib 加载视图而不是对其进行编程吗?
    • 您可以创建一个普通的 UIViewController(带有 xib)并将其视图传递给cameraOverlayView
    • 我刚刚试了一下.. 请看看我在link的另一篇帖子
    • @ttran 查看我在您的其他问题中的回复(如果对您有用,请接受答案:))
    【解决方案2】:

    除了@Mat 的回答, 应该添加 [self.zReader.view setFrame:[UIScreen mainScreen].bounds];self.zReader.cameraOverlayView=[self setOverlayPickerView];

    因为默认情况下self.zReader的大小是(320, 480)。

    顺便说一句,如果不需要兼容iOS6.0,你可以使用[AVCaptureDevice]:https://developer.apple.com/library/mac/documentation/AVFoundation/Reference/AVCaptureDevice_Class/Reference/Reference.html

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多