如何在第一个视图中检测应用程序的正确方向?我需要知道,所以我可以将肖像图像或风景图像显示为背景。
如果将iPad平放在表面上, [[UIDevice currentDevice] orientation]
将无法正常工作。
statusBarOrientation
似乎没有为第一个加载的视图返回正确的结果。我尝试在viewWillAppear
和viewDidLoad
中获取状态栏方向,并且即使处于横向状态,也都返回纵向。
我已确认[self.window makeKeyAndVisible]
位于AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
interfaceOrientation
。这只会在第一个视图控制器上返回错误的状态栏方向。
注意:我还尝试了UIViewController
中的[[UIDevice currentDevice] orientation]
广告,无论如何,该广告仍会返回肖像。
任何想法如何解决这个问题?
编辑:
我正在使用{{1}}来检测它是纵向还是横向,但我的问题是如果UIDevice返回平面(非纵向或横向)的方向,则检测视图实际是什么。
答案 0 :(得分:1)
许多应用程序都有此问题。如果设备是扁平的,那么任何方向都是有效的。
最好的办法是使用[[UIDevice currentDevice] orientation]
来了解可以确定方向的情况下的方向。但是当它持平时,它就会成为最后一次。
有多少次你看到有人轻弹他们的iPad以正确的方式获得景观定位。
答案 1 :(得分:1)
GOT IT!
我可以使用
进行解决- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
即使在视图加载时,如果方向不是UIInterfaceOrientationPortrait
,也会触发此方法。
即使设备是扁平的,似乎有足够长的延迟时间来校正自身并检测UIView
是处于纵向还是横向模式。
编辑:
当viewDidAppear
被触发时,[self interfaceOrientation]
具有正确的值。所以,如果你可以等到那个方法,你也可以在那里得到它。