0

我正在使用最新的 SDK 开发一个 iOS 应用程序。

我的应用程序只支持横向右方向,它只有一个视图控制器。我设置了唯一可用的方向修改myProject-info.plist

我试图理解为什么当我只支持横向右方向时,此代码会在纵向模式下为视图输出日志。

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
    UIView *videoView = self.videoPreviewView;
    NSLog(@"Video frame: %@", NSStringFromCGRect(videoView.frame));
}

控制台输出:

Video frame: {{0, 0}, {320, 568}}

我正在使用AVCaptureVideoPreviewLayer,我需要设置它的框架,但是当我这样做时,viewWillAppear:我得到了纵向值,但orientation值是横向的。

当方向更改为横向时,是否会触发事件或类似事件?

应用程序何时将方向更改为默认方向?

4

2 回答 2

0

进入 xCode,然后单击屏幕顶部的项目名称(下方有一个 xcode LOGO)。然后显示 iPhone/Ipad 开发信息并选择您希望用户可用的方向:)

于 2013-03-19T07:37:57.090 回答
0

如果添加该行:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:nil];

那么它会在-(void)orientationChanged;每次改变方向时调用该方法。然后,您可以执行以下操作:

-(void)orientationChanged {
    if (UIDeviceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation) {
        //device is portrait;
    }
    else {
        //device is landscape;
    }
}

然后,您可以使用它来确定视图的布局并根据方向进行设置。

编辑:您还可以检查状态栏的方向返回的方向是否等于 UIDeviceOrientationLandscapeLeft/LandscapeRight/Portrait/PortraitUpsideDown。

于 2013-03-19T07:52:39.157 回答