如何使objectAtIndex:0始终可见?

时间:2014-01-05 20:08:19

标签: ios objective-c uiview uiwindow

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

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

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

rootViewControllerobjectAtIndex:0还是更改rootViewController,它会删除外翻? 我被尝试了,在它消失的任何地方读了它,但是大多数都是更好的解决方案! 换句话说,我怎样才能添加它而不会失去它呢?

3 个答案:

答案 0 :(得分:0)

它是否消失或新视图被添加到其上?

通常,当前视图控制器将始终在窗口顶部显示自己的视图。

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

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

答案 1 :(得分:0)

我认为您无法创建一个浮动在应用中每个视图控制器顶部的视图。它违反了Apple的设计,因为视图和视图控制器应该起作用。

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

答案 2 :(得分:0)

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