像往常一样,我有一个UIViewController的子类。当我加载应用程序时,我需要调整一些我必须以编程方式放入的元素。当然,大小取决于界面方向:所以,我做了:
- (void)viewDidLoad {
switch( [self interfaceOrientation] ) {
case UIInterfaceOrientationPortrait:
case UIInterfaceOrientationPortraitUpsideDown:
NSLog(@"Portrait");
break:
case UIInterfaceOrientationLandscapeLeft:
case UIInterfaceOrientationLandscapeRight:
NSLog(@"Landscape");
break;
}
但是无论模拟器/设备的方向如何,即使一切都正确旋转,情况也始终是viewDidLoad / WillAppear中的Portrait。 在Plist中,我添加了所有支持的方向。 提示?
答案 0 :(得分:8)
尝试[UIApplication sharedApplication].statusBarOrientation
并检查交换机中的UIDeviceOrientationPortrait
,UIDeviceOrientationPortraitUpsideDown
等,因为[self interfaceOrientation]
根据我的经验不可靠。
答案 1 :(得分:0)
1)确保willAppear中的界面方向返回错误的界面方向。 2)试着看看http://developer.apple.com/library/ios/#qa/qa1688/_index.html
3)确保主视图控制器只是窗口中的viewcontroller(窗口中只有一个vc)
答案 2 :(得分:0)
我正在使用iOS App的旋转和方向。我发现self.interfaceOrientation总是会在viewDidAppear或之后调用时给你一个正确的结果。
[UIApplication sharedApplication]。直接向UIWindow添加视图时,首选.statusBarOrientation。
希望它有所帮助。