2014-11-05 56 views
9

我正在製作媒體播放器應用程序。我有導航控制器中嵌入的UITableViewControllers。我想以某種方式製作一個可能覆蓋多個(2?)這些tableview控制器的視圖(其中一個顯示用戶的播放列表,另一個顯示播放列表中的曲目),但僅在底部顯示,如正在播放在此如何使用XCode在iOS中製作媒體播放器應用程序中的現在播放欄?

enter image description here

酒吧中(例如)Spotify的iOS應用(如在此

enter image description here

左下方或者我試圖將一個集裝箱查看到我的導航控制器(我的TableViewCell嵌入其中),但它不會讓我把它放在那裏。

它看起來像我可以將容器視圖拖到我的TableView中,但是當我在不同的tableviews之間導航時,它將如何保持在那裏?

試圖遵循@ Rintaro的建議,但我對XCode有點新鮮。你是怎麼做的?所以我做了一個單一的視圖應用程序,我添加了一個容器視圖到第一個VC,它是imm畫在故事板的其他地方,但我無法弄清楚如何告訴那個視圖它是一個導航控制器。此外,只要我向第一個VC添加第二個容器並嘗試調整大小,第一個容器就會消失!它仍然在左邊的層次結構中列出,並且仍然有一個指向它的箭頭,但添加並指向的視圖控制器也是不可見的?!

enter image description here

enter image description here

UPDATE:這工作得很好,但它與方向變化的問題。我怎樣才能使這項工作在兩個方向? (我假設它當前將「正在播放的視圖」定位在屏幕外)。

回答

19

基本上,鑑於這樣的層次結構是這樣的:使用

screenshot

兩個「集裝箱查看「在初始視圖控制器中,一個用於導航控制器,一個用於」Now Playing Bar「視圖控制器。

新增:

「主容器視圖控制器」 將是你自己的UIViewController子類。它將有責任顯示/隱藏「正在播放欄」。


接口構建器奇怪行爲的解決方法。

您可以設置自動佈局約束如下。也許你可能想從左側菜單中選擇視圖。

請注意,您應該取消選中Constrain to margins複選框。

容器視圖的導航控制器:

screenshot

集裝箱信息查看正在播放欄控制器:

screenshot

從菜單

,然後Update Frames

screenshot

+0

感謝您的文章,我已經編輯了我的問題,試圖回答您的答案,看起來很有希望從您的屏幕截圖!視圖控制器是「主容器視圖控制器」?我沒有看到有這個圖標的對象庫中的任何東西? – Michael 2014-11-05 17:54:21

+0

主控制器是簡單的UIViewController,它包含2個UIContainerView。好主意。 – 2014-11-05 20:49:15

+1

@Michael已添加到答案。 – rintaro 2014-11-06 02:42:55

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]; 
+0

我真的試過這個,但它似乎並沒有顯示。什麼樣的VC應該作爲子視圖添加? – Michael 2014-11-05 18:08:50

+0

@Michael將它添加到你的根目錄VC - UINavigationController。試試這段代碼#define ROOTVC [[[[UIApplication sharedApplication] delegate] window] rootViewController]' – 2014-11-05 20:47:36

0

我將簡單地增加一個nowPlayingViewappDelegate.window和調整或者:

  • window.rootController.view幀,以避免重疊nowPlayingView

  • 如果window.rootController.viewUIScrollView,則調整它的contentInset.bottom以避免重疊nowPlayingView。您也可以使用此解決方案的透明度/半透明度。

  • 向控制器添加一個虛擬工具欄,該工具欄將被nowPlayingView覆蓋。

如果您window.rootControllerUINavigationController,那麼你必須做可能上面脫穎而出每次按下控制器。 nowPlayingView將保持不變。

2

如果您手動放置任何具有絕對座標的按鈕,請確保在更改旋轉時更新它們的座標。

+2

這似乎是更多的評論,而不是一個實際的答案 – Rizier123 2015-02-24 01:12:16

+0

我是基於屏幕大小設置nowplayingview的位置,但是當你旋轉時,我應該使用轉置尺寸(例如,屏幕寬度來設置y位置)。謝謝! – Michael 2015-02-24 15:39:07

相關問題