我需要根据方向更改View的图像背景。对于这一点,我使用viewWillAppear
的statusBarOrientation方法:statusBarOrientation在viewWillAppear上的错误值
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
UIInterfaceOrientation currentOrientation = [[UIApplication sharedApplication] statusBarOrientation];
if (UIInterfaceOrientationIsPortrait(currentOrientation)) {
NSLog(@"PORTRAIT");
} else if (UIInterfaceOrientationIsLandscape(currentOrientation)) {
NSLog(@"LANDSCAPE");
}
}
的问题是,控制台总是显示人像,甚至当iPad在横向模式举行。 viewDidAppear
中的代码正常工作,但已经太晚了,用户可以看到图像的更改。这让我认为statusBarOrientation的正确状态在viewWillAppear
中仍然不可用,但我已经阅读过其他一些问题,这些代码应该在那里工作。
什么更奇怪的是,在viewWillTransitionToSize:你可以查询方向,如果你旋转手机两次(回到它的viewDidLoad位置),statusBarOrientation会给你正确的答案。尽管它在viewDidLoad中给出了不同的答案,现在该设备与当时的方向相同! –