如何使 objectAtIndex:0 始终可见?

Posted

技术标签:

【中文标题】如何使 objectAtIndex:0 始终可见?【英文标题】:How to make objectAtIndex:0 always visible? 【发布时间】:2014-01-05 20:08:19 【问题描述】:

我正在尝试创建 UIView,我需要在整个应用程序中都可以看到它。 唯一的方法是,我该怎么做,将Subview 添加到UIWindow *window = [[UIApplication sharedApplication].windows objectAtIndex:0]。我在AppDelegate 中进行操作。到目前为止一切都很好。

 window = [UIApplication sharedApplication].keyWindow;
[[[window subviews] objectAtIndex:0] addSubview:myView];

它是左下角的一个小uiview。 在此视图中,我想播放视频,而您可以在后台执行其他操作。 但是当我推送另一个 ViewController 甚至更改 rootViewController 时,它会消失,我需要再次添加它。

rootViewController 是否添加到 objectAtIndex:0 或当我更改 rootViewController 时,它会删除所有内容? 我被尝试过,在它消失的任何地方都读到它,但大多数都有更好的解决方案! 换句话说,我怎样才能添加它而不会丢失它?

【问题讨论】:

将该视图作为子视图添加到窗口并使用 position.z =100。 @santhu 如何设置 position.z ? 使用 view.layer.zPosition @santhu 有效,但之后视图不再活跃。 为此,您必须导入quartzcore 框架。您所说的“不活跃”是什么意思?请准确解释。 【参考方案1】:

它是消失了还是在它上面添加了新视图?

通常当前视图控制器总是在窗口顶部显示它自己的视图。

如果您正在显示带有图像的背景视图,那么默认情况下可以在所有屏幕中保留背景图像...您必须将其添加到窗口层,

self.view.window.layer.contents = (id)[backgroundImage CGImage];

【讨论】:

不,这不是背景,它是 UIView,里面有自己的框架和东西!【参考方案2】:

我不认为您可以创建一个浮动在应用程序中每个视图控制器之上的视图。它违背了 Apple 对视图和视图控制器的工作方式的设计。

您可以使您的应用程序成为单个视图控制器应用程序,该视图控制器具有屏幕大小的容器视图。然后,您可以使用嵌入 segue 将您的应用程序的“真实视图控制器树”嵌入到该容器视图中。然后您可以将浮动视图放在最顶层的视图控制器上并获得您想要的效果。

【讨论】:

如果不符合苹果的设计,他们会拒绝我的应用,我什么时候会尝试把它放到应用商店?【参考方案3】:

创建一个新的UIWindow 并给它足够高的windowLevel(即UIWindowLevelStatusBar 应该可以解决问题)。然后将您希望可见的视图添加到窗口中,最后通过将hidden 属性设置为NO 使其可见。

【讨论】:

这个创建的 UIWindow 后面的 interAction 被禁用了!

以上是关于如何使 objectAtIndex:0 始终可见?的主要内容,如果未能解决你的问题,请参考以下文章

如何使角垫表中的排序箭头始终可见?

如何使视图在应用程序的屏幕上始终可见?

如何使附加项在 v-select vuetify 中始终可见

使滚动条在uiscrollview中始终可见[重复]

即使在 Xamarin Forms 中滚动页面的最右侧或最下方,如何使轴/索引始终可见?

使 ScrollView 中的滚动条在 SwiftUI 中始终可见