当 UIView 被隐藏时会发生啥?

Posted

技术标签:

【中文标题】当 UIView 被隐藏时会发生啥?【英文标题】:What really happens when a UIView becomes hidden?当 UIView 被隐藏时会发生什么? 【发布时间】:2012-07-18 17:17:51 【问题描述】:

这听起来像是一个奇怪的问题,但当它被隐藏时究竟会发生什么。很高兴看到 UIView 源代码,但这不会发生。

这就是我想知道的原因: 我正在尝试在我的应用程序上方添加一个 UIWindow(一个透明的,用户交互启用设置为 NO)来为屏幕着色。在用户尝试使用 Apple 的 MessageUI.framework 通过 SMS 共享之前,它工作得非常好。当这种情况发生并且 MFMessageComposeViewController 或 MFMailComposeViewController 出现时,这些视图控制器将不会接收用户输入。我已经尝试了很多东西,唯一有效的方法是允许用户与视图交互,将 UIWindow(我添加的那个)设置为 0 的 alpha 或将隐藏设置为 YES。我想在不隐藏视图的情况下复制它,这就是为什么我想知道当 UIWindow(它是 UIView 的子类)被隐藏时会发生什么。

【问题讨论】:

【参考方案1】:

ios 应用程序中通常只有一个窗口。您最好只使用UIView 来完成此任务,而不是使用UIWindowUIWindowUIView 类添加了一些视图层次结构和事件管理功能。此功能会干扰您的应用程序中的预期行为。我认为如果您将此视图的类更改为UIView 而不是UIWindow,它将起作用。

【讨论】:

在 UIView 产生相同的不需要的结果后,我切换到使用 UIWindow。 您是否使用 presentModalViewController:animated: 来显示组合视图控制器?

以上是关于当 UIView 被隐藏时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

当视图开始被隐藏时,约束会发生啥?

uiview 作为包含 uitableview 的子视图

当调整大小小于元素时,如何使元素隐藏在 UIView 中

当UIVIew隐藏在sameView中时,如何为UIview设置动画

当superView frameWidth 发生变化时,UIView 不会自动调整大小

USearchController 隐藏的 UIView