如何使用XCode在iOS中的媒体播放器应用程序中创建一个现在正在播放的栏?

我正在制作媒体播放器应用。 我有UITableViewControllers嵌入在导航控制器中。 我想以某种方式制作一个可以叠加这些tableview控制器的多个(2?)的视图(一个显示用户的播放列表,另一个显示播放列表中的曲目),但仅在底部,如现在播放吧(例如)Spotify的iOS应用程序(如左下方)

在此处输入图像描述

或者如此

在此处输入图像描述

我试图将一个容器视图拖到我的导航控制器中(我的嵌入了我的TableViewCell),但它不会让我放在那里。

看起来我可以将Container View拖到我的TableView中,但是当我在tableviews之间导航时它会如何保留在那里?

试图按照@Rintaro的建议,但我对XCode有点新意。 你是怎么做的? 所以我制作了一个单一的视图应用程序,我为第一个VC添加了一个容器视图,它是在故事板中的其他地方绘制的,但我无法弄清楚如何告诉该视图它是一个导航控制器。 另外,只要我向第一个VC添加第二个容器并尝试调整它的大小,第一个容器就会消失! 它仍然在左侧的层次结构中列出,并且仍然有一个指向它的箭头,但是添加并被指向的视图控制器也是不可见的?!

在此处输入图像描述

在此处输入图像描述

更新:这非常有效,但它在方向更改方面存在问题。 我怎样才能在两个方向上完成这项工作? (我假设当方向改变时,它当前将“nowplaying view”定位在屏幕外)。

基本上 ,像这样的视图层次结构是这样构造的:

截图

在初始视图控制器中使用两个“容器视图”,一个用于导航控制器,一个用于“正在播放栏”视图控制器。

添加:

“主容器视图控制器”将是您自己的UIViewController子类。 它将负责显示/隐藏“正在播放的酒吧”。


Interface Builder奇怪行为的解决方法。

您可以设置如下的自动布局约束。 也许您可能想从左侧菜单中选择视图。

请注意,您应取消选中“ Constrain to margins复选框。

导航控制器的容器视图:

截图

正在播放条形码控制器的容器视图:

截图

然后,从菜单中Update Frames

截图

如果手动放置具有绝对坐标的任何按钮,请确保在更改旋转时更新它们的坐标。

显然,您需要创建一个自定义UIView类,您将在其中显示此菜单。 当您创建它时,将其添加到您的视图中,就像这样:

 float y = ROOTVC.view.frame.size.height - 49; [self setFrame:CGRectMake(0, y, 320, 49)]; [ROOTVC.view addSubview:self]; [ROOTVC.view bringSubviewToFront:self]; 

我只需将一个nowPlayingView添加到nowPlayingView并调整:

  • window.rootController.view框架避免重叠nowPlayingView

  • 如果window.rootController.viewUIScrollView ,请调整其contentInset.bottom以避免重叠nowPlayingView 。 您还可以对此解决方案使用透明度/半透明度。

  • 向控制器添加一个虚拟工具栏,该工具栏将被nowPlayingView覆盖。

如果你的window.rootController是一个UINavigationController ,那么你必须在你推动的每个控制器之前执行上述操作。 nowPlayingView将保持不变。