Stu*_*art 16 orientation ipad uiinterfaceorientation ios
这个问题似乎是间歇性的,但我不确定为什么.在设备(iPad)上运行我的应用程序时,我有一些代码可以根据当前设备方向加载带有一些图像视图的滚动视图.即使设备在加载之前是横向的,视图也会像纵向一样被加载.
通过调用找到方向[[UIApplication sharedApplication] statusBarOrientation].
视图设置为在旋转设备时调整其位置,实际上,旋转到纵向然后返回到横向将它们返回到正确的横向位置.是否所有应用程序都以纵向方式开始,如果需要,很快就会更改为横向?我是否试图过早检查方向(在init第一个视图控制器加载期间)?
小智 35
OK固定.
使用UINavigationController,当我popToViewController:animated:从横向视图到纵向视图,目标视图显示正确但状态栏和UIKeyboard保持横向配置,使得真正的混乱.
解决 有关statusBarOrientation和参考的成千上万的建议阅读... https://developer.apple.com/library/content/releasenotes/General/RN-iOSSDK-6_0/index.html
"setStatusBarOrientation:animated:方法不会被直接弃用.现在只有当最顶层的全屏视图控制器的supportedInterfaceOrientations方法返回0时才会起作用.这使调用者负责确保状态栏方向一致." (感谢Vytis在这里)
statusBarOrientation仅在supportedInterfaceOrientations返回0时有效,所以...给我们一个猜测.
如果statusBarOrientation不符合预期,则返回一个零返回(如果始终返回0,则视图不会旋转,因此:
// 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;
}
Run Code Online (Sandbox Code Playgroud)
现在,在viewDidAppear中(相信我,即使收到键盘通知,我也会使用此调用:
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationPortrait;
Run Code Online (Sandbox Code Playgroud)
超过48个劳动时间.希望这有一段时间,感谢所有人.
如果你是子类化UIWindow或状态栏,你会看到这个,因为这是ipad设备的原生方向.UIWindow将方向和坐标转换为我们习惯的方式.makeAndKeyVisible后,视图控制器中的设备和界面方向应该符合预期.你不会偶然使用MTStatusBarOverlay吗?我经历了同样的事情,它归结为实例化的顺序.
| 归档时间: |
|
| 查看次数: |
44529 次 |
| 最近记录: |