gpt4 book ai didi

ios - 状态栏是横向的,但是 [[UIApplication sharedApplication] statusBarOrientation] 返回纵向

转载 作者:IT王子 更新时间:2023-10-29 08:17:11 28 4
gpt4 key购买 nike

这个问题似乎是间歇性的,但我不确定具体原因。在设备 (iPad) 上运行我的应用程序时,我有一些代码可以根据当前设备方向加载带有一些 ImageView 的 ScrollView 。尽管设备在加载前是横向的,但加载 View 时就好像它是纵向的一样。

方向是通过调用 [[UIApplication sharedApplication] statusBarOrientation] 找到的。

View 被设置为在设备旋转时调整它们的位置,事实上,旋转到纵向然后回到横向会使它们回到正确的横向位置。是否所有应用程序都以纵向模式开始,并在需要时很快更改为横向模式?我是否尝试过早检查方向(在要加载的第一个 View Controller 的 init 期间)?

最佳答案

确定。

使用 UINavigationController,当我 popToViewController:animated: 从横向 View 到纵向 View 时,目标 View 显示正确,但状态栏和 UIKeyboard 保持横向配置,造成真正的困惑。

变通在阅读了数以千计关于 statusBarOrientation 和引用资料的建议之后...... https://developer.apple.com/library/content/releasenotes/General/RN-iOSSDK-6_0/index.html

"The setStatusBarOrientation:animated: method is not deprecated outright. It now works only if the supportedInterfaceOrientations method of the top-most full-screen view controller returns 0. This makes the caller responsible for ensuring that the status bar orientation is consistent." (thanks to Vytis in here)

statusBarOrientation 仅在 supportedInterfaceOrientations 返回 0 时有效,所以...让我们猜测一下。

如果 statusBarOrientation 不符合预期,返回一个零即可(如果始终返回 0, View 将不会旋转,因此:

// if deviceOrientation is A (so I expect statusbarOrientation A
// but statusbarOrientation is B
// return 0
// otherwise
// return user interface orientation for A

- (NSUInteger)supportedInterfaceOrientations {
UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation];
UIInterfaceOrientation statusBarOrientation =[UIApplication sharedApplication].statusBarOrientation;
if(deviceOrientation == UIDeviceOrientationPortrait || deviceOrientation == UIDeviceOrientationPortraitUpsideDown){
if(statusBarOrientation != UIInterfaceOrientationPortrait ||statusBarOrientation != UIInterfaceOrientationPortraitUpsideDown){
return 0;
}
}
// otherwise
return UIInterfaceOrientationMaskPortrait;
}

现在,在 viewDidAppear 中(相信我,即使收到键盘通知,我也会使用此调用:

[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationPortrait;

超过 48 个工时。希望这对大家有所帮助,谢谢大家。

关于ios - 状态栏是横向的,但是 [[UIApplication sharedApplication] statusBarOrientation] 返回纵向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810397/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com