gpt4 book ai didi

iphone - 如何实现 UIViewController 旋转以响应方向变化?

转载 作者:行者123 更新时间:2023-12-03 18:39:56 25 4
gpt4 key购买 nike

我的应用程序有大约 10 个不同的 UIViewController,如果设备旋转,我只想将其中一个切换到横向模式。 (其余的,我想保留纵向。)

为了在该 View 上实现旋转,我需要实现其 Controller 的“shouldAutorotate”方法并返回 YES。由于此 View 是通过导航 Controller 访问的,因此我还需要创建 UINavigationController 的子类来实现“shouldAutorotate”并返回 YES。

这个解决方案有效,但效果太好了。我发现我推送到 UINavigationController 子类上的所有 UIViewController 都会响应旋转,即使我实现了“shouldAutorotate”并返回 NO。 (请记住:我只希望一个特定的 UIViewController 响应旋转,而不是导航 Controller 堆栈中的每个 UIViewController 响应旋转。)

所以,我的问题是:我怎样才能最好地做到这一点?我能想到的所有解决方案似乎 1) 很麻烦,2) 更糟糕的是,似乎不起作用。

非常感谢。

最佳答案

当您实现 UINavigationController 时,此类是您的父级,它控制将被插入堆栈的所有子级 viewController。因此,RootViewController 是唯一对自动旋转说"is"或“否”的 Controller 。即使您在 subview Controller 中将"is"传递给自动旋转,它们也不算数!

这就是 UINavigationController 的本质。因此,要更改它,您有两种选择:

1-手动操作它,这需要你经过一些繁琐的代码。

2-更改您的设计,使其与 UINavigationController 更加兼容。应该旋转的单个 View 应该由 RootViewController(而不是导航 Root View Controller ——它们的名称相同,但完全不同)(托管 NavController 的 View )调用。当设备旋转时,它会将 NavController 推送到 View 或其他 View 。

3-另一种方法也可以,但不推荐,因为它违反了 MVC 的概念,即您的 NavController 可以监听通知。可以并且应该旋转的特定 subview 可以转换通知 - 例如rotateMe,一旦 NavController 听到它,它就会旋转。

正如我所说,它会起作用,但它违反了 MVC 模型——这对 Apple 来说很好,但从编程角度来看并不推荐。

如果您需要有关其中任何一个的进一步解释,请告诉我。

关于iphone - 如何实现 UIViewController 旋转以响应方向变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838281/

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