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

时间:2014-11-05 13:08:41

标签: ios swift ios8 xcode6 uistoryboard

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

enter image description here

或在此

enter image description here

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

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

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

enter image description here

enter image description here

更新:这非常有效,但是方向更改有问题。我怎样才能在两个方向上完成这项工作? (我假设它当前定位"现在播放视图"当方向改变时关闭屏幕。)

4 个答案:

答案 0 :(得分:20)

基本上,像这样构建的视图层次结构如下:

screenshot

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

增加:

"主容器视图控制器"将是您自己的UIViewController子类。它将有责任显示/隐藏"正在播放栏"。


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

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

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

导航控制器的容器视图:

screenshot

正在播放栏控制器的容器视图:

screenshot

然后,菜单中的Update Frames

screenshot

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我只需向nowPlayingView添加appDelegate.window并调整:

  • window.rootController.view框架,以避免与nowPlayingView重叠。

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

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

如果您的window.rootControllerUINavigationController,那么您必须在推送的每个控制器之前执行以上操作。 nowPlayingView将保持不变。