ios – UITabBarController的标签旋转和willRotateToInterfaceOrientation传播

概述我的应用程序有四个选项卡:A,B,C和D.他们的UIViewController由UITabBarController管理.该应用程序支持旋转,因此每个视图控制器都返回YES到shouldAutorotateToInterfaceOrientation. 使用d簧和支柱,大多数旋转由iOS自动完成.但是,选项卡A还需要进一步定位,它是在VC的willRotateToInterfaceOrienta 我的应用程序有四个选项卡:A,B,C和D.他们的UIVIEwController由UITabbarController管理.该应用程序支持旋转,因此每个视图控制器都返回YES到shouldautorotatetoInterfaceOrIEntation.

使用d簧和支柱,大多数旋转由iOS自动完成.但是,选项卡A还需要进一步定位,它是在VC的willRotatetoInterfaceOrIEntation方法中完成的.

选择选项卡A的VC并旋转屏幕时,该VC将收到willRotatetoInterfaceOrIEntation消息(由iOS从UITabbarController传播),并且生成的旋转正确.

但是,当选定的选项卡为B并且旋转屏幕时,不会调用A的willRotatetoInterfaceOrIEntation.说得通.但是,如果我然后选择选项卡A,我只得到应用其d簧和支柱的结果,而不进行其willRotatetoInterfaceOrIEntation完成的后处理.

经过一段时间的努力,在未能在网上找到解决方案之后,我想出了以下内容.我将UITabbarController子类化,并在其willRotatetoInterfaceOrIEntation中调用所有VC的willRotatetoInterfaceOrIEntation,无论哪个是selectedVIEwController:

- (voID) willRotatetoInterfaceOrIEntation:(UIInterfaceOrIEntation)toInterfaceOrIEntation duration:(NSTimeInterval)duration {    if (self.vIEwControllers != nil) {        for (UIVIEwController *v in self.vIEwControllers)             [v willRotatetoInterfaceOrIEntation:toInterfaceOrIEntation duration:duration];    }}

它有效,但它看起来像一个黑客,我的问题是我是否正在做正确的事情.有没有办法告诉iOS在屏幕旋转后第一次显示它之前总是调用VC的willRotatetoInterfaceOrIEntation?

解决方法 处理自定义布局的最佳方法是通过子类化UIVIEw并覆盖layoutSubvIEws方法.无论何时更改(以及其他时间),系统都会将layoutSubvIEws发送到视图.因此,当您的视图A即将出现在具有不同大小的屏幕上时(因为界面在视图B在屏幕上时旋转),系统会向视图A发送layoutSubvIEws消息,即使它没有向视图控制器A发送一个willRotatetoInterfaceOrIEntation : 信息.

如果您的目标是iOS 5.0或更高版本,则可以覆盖UIVIEwController子类的vIEwDIDLayoutSubvIEws方法并在那里进行布局,而不是子类化UIVIEw.我更喜欢在我的视图中使用layoutSubvIEws,以使我的视图特定逻辑与我的控制逻辑分开.

在willRotatetoInterfaceOrIEntation中进行布局也是一个坏主意:因为系统在实际更改视图大小之前以及旋转动画块之前发送该消息.它在旋转动画块内发送willAnimateRotationToInterfaceOrIEntation:duration:,layoutSubvIEws和vIEwDIDLayoutSubvIEws消息,因此如果在旋转期间视图在屏幕上,则子视图的重新定位将被动画化.

总结

以上是内存溢出为你收集整理的ios – UITabBarController的标签旋转和willRotateToInterfaceOrientation传播全部内容,希望文章能够帮你解决ios – UITabBarController的标签旋转和willRotateToInterfaceOrientation传播所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1051951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存