iPad ios6中的方向问题
Posted
技术标签:
【中文标题】iPad ios6中的方向问题【英文标题】:Orientation issue in iPad ios6 【发布时间】:2013-03-01 05:29:31 【问题描述】:我在viewDidAppear
和viewWillAppear
中检查设备的方向,并通过调用willAnimateRotationToInterfaceOrientation
方法强制方向。
- (void) viewWillAppear:(BOOL)animated
[super viewWillAppear:YES];
_levelComplete = YES;
[self willAnimateRotationToInterfaceOrientation:[[UIDevice currentDevice] orientation] duration:0.01];
- (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
if (toInterfaceOrientation == (UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight) )
else if (toInterfaceOrientation == UIInterfaceOrientationPortrait)
我面临的问题是toInterfaceOrientation
对于viewDidAppear
和viewWillAppear
方法都为0,因此程序崩溃。
可能是什么问题?
请帮忙!
【问题讨论】:
【参考方案1】:试试这个
- (void) viewDidLoad
_levelComplete = YES;
[self adjustViewsForOrientation:self.interfaceOrientation];
-(void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
else
【讨论】:
完美运行!谢谢 :) 问题出在 [[UIDevice currentDevice] 方向]【参考方案2】:正如您所提到的:我面临的问题是 viewDidAppear 和 viewWillAppear 方法的 toInterfaceOrientation 仍然为 0,因此程序崩溃。
方向 0 表示未知方向。在 viewWillAppear
和 viewDiddAppear
以及定向代表上设置断点。请注意,方向的委托是否首先被调用视图委托。
你可以使用委托
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
return UIInterfaceOrientationLandscapeLeft;
使用此委托,应用程序将以横向模式或任何所需的方向模式显示。
试试看。
【讨论】:
即使设备处于纵向模式,您的代码也会强制使用横向模式。 是的。您可以在委托中提供所需的任何方向。如果需要,您甚至可以强制使用纵向模式。 我想根据设备方向更改视图方向!我不想强制一个方向。 是的。它将强制执行所需的方向。您可以通过 self 类的 interfaceOrientation 属性获取当前方向.. 另外,方向 0 通常来自模拟器。不在设备上。以上是关于iPad ios6中的方向问题的主要内容,如果未能解决你的问题,请参考以下文章
iPad 上的 UIViewController 处理方向 iOS 6.0