当主视图 segues 时,如何使视图保持在屏幕上?

How do I make a view that stays onscreen when the main view segues?

如何使视图在每次视图转场时都不会重新加载(停留在屏幕上)?就像 Apple iOS 播客应用程序中的音频控件一样。查看图片以查看我正在引用的音频控件。

如何在故事板中执行此操作?

我认为你可以将它添加到应用程序之上 window(它是 UIWindow,UIView 的子类)

UIView *myView = /* <- Your custom view */;
UIWindow *currentWindow = [UIApplication sharedApplication].keyWindow;
[currentWindow addSubview:myView];

代码来自

或者您可以直接添加到 UITabBarController.view,因为它是横跨整个屏幕的 UIView。

不过您需要为其制作自定义视图。

您所指的通常称为 "mini player",您也可以在许多其他应用中找到它。

您应该使用的技术称为 "UIViewController Containment",在故事板中它可以作为 "Container View" 和 "Embed Segues" 访问。

典型的故事板可能如下所示:

  • 根视图控制器添加了两个容器视图。
  • 容器视图可以转至视图控制器。在视图中
  • 与下一个相关的控制器,设置迷你播放器。
  • 嵌入导航的上层容器的视图控制器 控制器和选项卡视图控制器。

这将创建视图控制器层次结构。

要实现播放器本身,请创建一个播放器 class,您可以在应用委托中对其进行实例化,并将其传递给根 vc 上的 属性。从那里将它传递给迷你播放器视图控制器和上层视图控制器,它将包含 songs/podcast/... 到 select 的列表。在 selection 将帽子歌曲传给玩家 class。


我在 GitHub 发布了一个示例应用程序:https://github.com/vikingosegundo/HearThisMiniplayer