2014-03-01 23 views
1

我正在使用ZBarSDK进行QR码扫描功能。我只想在PORTRAIT模式下使用它。根据文档我使用下面的代码行进行设置:即使通过_reader.supportedOrientationsMask限制它,ZBarReaderViewController阅读器视图也会更改iOS6和iOS7的方向

_reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait);

正如预期的那样,它适用于iOS 5,但具有相同的代码此视图改变iOS的方向6 & 7. supportOrientationsMask仅适用于iOS 6的<?是否有任何其他方式强制此ZBar阅读器摄像机视图只能在肖像模式下工作?在此先感谢

这里更多的细节与代码:

if(_reader) // first check `_reader` is created or not? 
{ 
    [_reader.readerView stop]; // then stop continue scanning stream of "self.ZBarReaderVC" 
    for(UIView *subViews in _reader.view.subviews) // remove all subviews 
     [subViews removeFromSuperview]; 
    [_reader.view removeFromSuperview]; 
    _reader.view = nil; 
} 

_reader = [ZBarReaderViewController new]; 
_reader.readerDelegate = self; 

_reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait); 

ZBarImageScanner *scanner = _reader.scanner; 

// EXAMPLE: disable rarely used I2/5 to improve performance 
[scanner setSymbology: ZBAR_I25 
       config: ZBAR_CFG_ENABLE 
        to: 0]; 

[_reader.view setFrame:CGRectMake(0, _topbar.frame.size.height, self.view.bounds.size.width, self.view.bounds.size.height-_topbar.frame.size.height)]; 

_reader.cameraOverlayView = [self CommomOverlay]; 

_reader.showsZBarControls=NO; 

// present and release the controller 
[self presentModalViewController: _reader 
         animated: NO]; 

让我知道的情况下,需要更多的细节。

+0

嘿,它是在肖像模式下工作?风景模式有什么问题? – chandan

+0

我不希望屏幕在横向模式下旋转并只保留纵向。对于iOS 5,但是我改变我的设备方向它只保留肖像。这只是iOS6和iOS7,它允许相机屏幕(_reader呈现在视图控制器上)改变风景方向,这是问题,不应该发生。 – Niraj

回答

3

终于找到了解决办法。 问题是这样的: ZbarViewController *阅读器是从我当前的视图控制器提交的,它的肖像支持属性无法以某种方式工作。

_reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait); 

我做了什么来解决这个问题是我创建TBZbarViewController这是继承了ZbarViewController类新类,放在下面的方法。

-(BOOL)shouldAutorotate{ 
return NO; 

}

然后我用了TBZbarViewController *读者从我的控制器,它解决了问题,提出并在需要它的工作只在人像模式。

谢谢。

0

我不喜欢这一点,并正在为所有iOS版本:

第1步:设置你的设备的方向

enter image description here

第2步:这段代码添加到您的实现(.m)文件。

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0 

- (BOOL) shouldAutorotate 
{ 
    return YES; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 

    return UIInterfaceOrientationMaskPortrait; 

} 

#endif 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait) || (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown); 
} 
+0

谢谢Ajay, 但这里的问题是我的应用程序是通用的应用程序,我已经完成了上面提到的你。因此,所有的视图控制器都可以在纵向模式下正常工作,但是当我从视图控制器中提供ZBarReaderViewController * reader时,摄像机读取器会打开并且改变我想要作为纵向遮挡的方向。 我无法查看ZBarReaderViewController.m文件进行任何更改。但奇怪的是,下线不工作。 _reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait); 对此有何见解? – Niraj

相关问题