给 UIWindow 添加 subview 有啥坏处?

Posted

技术标签:

【中文标题】给 UIWindow 添加 subview 有啥坏处?【英文标题】:What are the disadvantages of adding subview to UIWindow?给 UIWindow 添加 subview 有什么坏处? 【发布时间】:2017-02-20 10:41:09 【问题描述】:

我是 ios 开发新手,实际上我想将 UICollectionView 添加到所有内容的顶部。所以,为此我将它添加到 UIWindow,基本上我想知道将 UICollectionView 添加到 UIWindow 有什么缺点。如果是的话,有没有办法将任何对象添加到所有内容的顶部? 谢谢。

【问题讨论】:

为什么要将它添加到 UIWindow 上,您可以将 collectionView 放在 UIViewController 中并放在视图层次结构的顶部。 我想要整个应用中的集合视图。 除非您需要设备旋转,否则没有缺点。 无法理解您的观点。如果集合是视图,那么用户将如何与其他功能进行交互?如果不涉及其他功能,那为什么不把collectionview放在viewcontroller本身呢? 您可以选择使用bringSubviewToFront 方法,每次您希望collectionview 位于其他所有内容之上。 【参考方案1】:

通常 UIWindow 的想法是持有 1 个 rootViewController 而不是玩太多,只在需要获取主视图的情况下使用它。

这样做的正确方法是拥有 1 个主 NavigationController 并用您想要的任何类型的顶视图(即侧菜单、各种叠加层等)覆盖它,这样它总是可以从子控制器访问并且您可以在 UIViewController 中使用所有相关的委托方法对其进行完整处理。

【讨论】:

【参考方案2】:

除了这通常被认为是不好的做法,UIKit 应该为您提供一种替代方法来避免这种用法,我能想到的最大问题是视图直接添加到UIWindow 做不响应设备方向更改(旋转)事件,并且不会随 UI 的其余部分一起旋转。

【讨论】:

键盘有自己的窗口。模态框过去也有自己的窗口。

以上是关于给 UIWindow 添加 subview 有啥坏处?的主要内容,如果未能解决你的问题,请参考以下文章

将 UIImage 传递给 SubView 的 UIImageView?

如何在屏幕的某个部分添加另一个 UIWindow

iPhone 上的警报视图

如何使 objectAtIndex:0 始终可见?

ONLongPressGesture to Touches Moved in subview

如何在 UIWindow 中添加视图?