2

如何在第一个视图中检测到应用程序的正确方向?我需要知道这样我才能显示纵向图像或横向图像作为背景。

[[UIDevice currentDevice] orientation]如果 iPad 平放在表面上,则无法正常工作。

statusBarOrientation似乎没有为加载的第一个视图返回正确的结果。我尝试在 and 中获取状态栏方向,viewWillAppear并且viewDidLoad两者都返回Portrait,即使在横向时也是如此。

我已经确认我[self.window makeKeyAndVisible]在我AppDelegate.m的 in 中- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions。这只会在第一个视图控制器上返回不正确的状态栏方向。

注意:我也尝试过无论如何仍然返回肖像interfaceOrientation的广告。UIViewController

任何想法如何解决这一问题?

编辑:

我正在使用[[UIDevice currentDevice] orientation]来检测它是纵向还是横向,但我的问题是如果 UIDevice 返回平面方向(非纵向或横向),则检测视图实际上是什么。

4

2 回答 2

1

知道了!

我能够通过使用来解决问题

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

即使在视图加载时,如果方向不是 ,也会触发此方法UIInterfaceOrientationPortrait

即使设备是平的,似乎也有足够长的延迟来纠正方向并检测它UIView是处于纵向还是横向模式。

编辑:

viewDidAppear由 then 触发时,[self interfaceOrientation]具有正确的值。所以如果你可以等到那个方法,你也可以在那里得到它。

于 2012-08-29T17:52:37.117 回答
1

许多应用程序都有这个问题。如果设备是平的,那么任何方向都是有效的。

[[UIDevice currentDevice] orientation]对于可以确定方向的情况,如果可能的话,最好的办法是使用来了解方向。但是当它是平坦的时,它将只是它最后的样子。

你有多少次看到人们打开他们的 iPad 来获得正确的风景方向。

于 2012-08-29T16:41:32.623 回答