gpt4 book ai didi

iphone - 在 iPhone 上强制更改 UIInterfaceOrientation

转载 作者:太空狗 更新时间:2023-10-30 03:33:33 27 4
gpt4 key购买 nike

我正在努力获得一个 iPhone 应用程序,该应用程序几乎需要导航 Controller 堆栈中的每一次按下或弹出来改变方向。

基本上第一个 View 是纵向 View ,第二个 View 是纵向 View ,第三个 View 是纵向 View (是的,我知道这不太理想,但这是设计,我必须实现它)。

我在这里听取了各种建议....
How do I detect a rotation on the iPhone without the device autorotating?
Force portrait orientation on pushing new view to UINavigationViewController
Is there a documented way to set the iPhone orientation?
但没有完全成功。

设置链接到 3.1.2 我对上面链接文章的阅读似乎表明如果我的肖像 View 推送 View

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) );
}
然后该 View 应该显示为横向旋转。发生的事情是它以“损坏的”纵向形式出现,然后随着设备转动而正确旋转。

如果我将 Controller 弹出回我的纵向 View (它有一个适当的 shouldAutoRotate...),那么它将保持在损坏的横向 View 中,直到设备返回纵向。

我还尝试删除所有 shouldautorotate 消息,而是通过转换 View 来强制旋转。这种方法有效,我发现通过移动状态栏(实际上隐藏在我的应用程序中) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight; 键盘将以正确的方向出现需要时。

这种方法的问题在于,当您没有状态栏时,状态栏转换会变得怪异和丑陋 - 每次更改时页面上都会出现一个阴影。

所以。我错过了什么。

1) 我认为在 3.1.2(或可能更早)中 shouldAutorotateToInterfaceOrientation 应该通过插入 Controller 来提供所需的方向是错误的吗?

2) 是否有另一种方法可以让键盘以正确的方向显示。

3) 未记录的 API 调用是否可行(请不要!)

最佳答案

你不应该使用 [UIViewController shouldAutorotateToInterfaceOrientation:] 来触发方向改变;它只是让系统知道是否允许自动旋转。您仍应更新它以指定允许的方向。

如果您想在显示特定 View 时更改方向,您应该在 [UIViewController viewWillAppear:] 覆盖方法中调用 [UIApplication setStatusBarOrientation:animated:]对于每个强制特定方向的 View Controller 。当 View 被插入堆栈和弹出时,这将导致变化。确保在覆盖方法中调用 super

这也是更改状态栏显示方式的正确位置,如果您正在这样做的话。

关于iphone - 在 iPhone 上强制更改 UIInterfaceOrientation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689598/

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