它什么时候将方向改变为默认方向?
我正在开发一个带有最新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
值景观权。
是否有事件或任何类似的东西,当我在取向变为横向时被触发?
该应用何时将方向更改为默认方向?
进入xCode,然后单击屏幕顶部的项目名称(在其下面带有xcode LOGO)。 然后揭示了iPhone/iPad的开发信息,并选择你想成为可供用户:)
如果添加行方向:
[NSNotificationCenter defaultCenter]的addObserver:自我选择:@选择(orientationChanged)name:UIDeviceOrientationDidChangeNotification object:nil];
那么每次方向改变时它都会调用-(void)orientationChanged;
方法。然后,您可以这样做:
-(void)orientationChanged {
if (UIDeviceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation) {
//device is portrait;
}
else {
//device is landscape;
}
}
然后你可以用它来确定你的观点和安装基于取向的布局。
编辑: 您还可以检查statusBar的方向返回的方向是否等于UIDeviceOrientationLandscapeLeft/LandscapeRight/Portrait/PortraitUpsideDown。
我已经添加了你的代码,'orientationChanged:'运行了两次,UIDevice的方向总是正确的。 – VansFannel 2013-03-19 08:51:55
orientationChanged被调用的次数要多于风景/肖像。它也明显地检查了很多中间方向。我在代码中做的是存储一个具有当前方向的变量,如果它与新方向相同,则退出该方法。 – Jsdodgers 2013-03-19 09:04:53
感谢您的回答,但'currentOrientation = [UIApplication sharedApplication] .statusBarOrientation;'总是返回横向正确的方向。问题是'currentOrientation = [UIApplication sharedApplication] .statusBarOrientation;'总是风景,但'UIView'在'viewWillAppear'上有纵向,我不知道它在哪里改变风景。 – VansFannel 2013-03-19 10:45:54
我说景观权是唯一可用的方向,因为我之前做过。对不起,这不能回答我的问题。 – VansFannel 2013-03-19 07:41:37
只是为了确保,只有风景权是“突出显示”(黑色)的权利。 如果不工作,然后在每个视图控制器复制此代码:) - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)取向 { 返回UIInterfaceOrientationIsLandscape(取向); } – 2013-03-19 07:43:50
是的,在我提出这个问题之前就完成了。 – VansFannel 2013-03-19 07:45:31