2

我需要通過在MPMoviePlayerViewController頂部的工具欄添加標題,如果正在播放視頻,用戶水龍頭應該隱藏,就像它隱藏任何其他控件的標題。如何通過MPMovieplayerViewController添加標題和隱藏自來水

目前我正在添加一個UILabel作爲moviePlayer視圖的子視圖。雖然這種方法在頂欄添加了一個標題(我相應地設置了框架),但當用戶點擊屏幕時,它不會隱藏標題。

是否有任何直接的API /黑客通過它我可以訪問MPMoviePlayerViewController頂部工具欄?我想,如果我可以添加標題作爲頂級工具欄的子視圖,隱藏進程將由MPMoviePlayerViewController處理。有什麼想法嗎?

在此先感謝!

+0

http://www.techotopia.com/index.php/Video_Playback_from_within_an_iOS_6_iPhone_Application – jkk

+0

@Mak該鏈接是沒有幫助的。 – Till

回答

3

請注意,我的回答是指MPMoviePlayerController,不MPMoviePlayerViewController。我建議您直接或通過參考MPMoviePlayerViewController來使用它。

首先,從來沒有直接添加任何東西到MPMoviePlayerController的觀點。這很容易產生各種奇怪的副作用,在文檔中明確提示不要這樣做。請使用它的backgroundView來託管您的自定義內容或MPMoviePlayerControllerview(使其成爲兄弟)的父項。

但是,如果用戶點擊或簡單地等待,那麼這不會解決您所描述的具有該視圖/標籤/任何dis /重新出現的問題。

有辦法做到這一點,但恐怕這些都是在灰色地帶 - 或者換句話說,有蘋果被拒的機會。事實上,它不僅僅是一個灰色地帶,而且明顯違反了蘋果的開發指南。

只是,我在過去的主要應用程序中使用過這個技巧,並且從未被檢測到/拒絕。

首先,您需要找到MPMoviePlayerController實例的接口視圖。

/** 
* This quirky hack tries to locate the interface view within the supposingly opaque MPMoviePlayerController 
* view hierachy. 
* @note This has a fat chance of breaking and/or getting rejected by Apple 
* 
* @return interface view reference or nil if none was found 
*/ 
- (UIView *)interfaceView 
{ 
    for (UIView *views in [self.player.view subviews]) 
    { 
     for (UIView *subViews in [views subviews]) 
     { 
      for (UIView *controlView in [subViews subviews]) 
      { 
       if ([controlView isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")]) 
       { 
        return controlView; 
       } 
      } 
     } 
    } 
    return nil; 
} 

UIView *interfaceView = [self interfaceView]; 

既然已經有了實例,只需將您的視圖/標籤/視圖添加到該視圖。

[interfaceView addSubview:myAwesomeCustomView]; 
+3

fyi - 這個更改爲iOS中的「MPVideoPlaybackOverlayView」七 –

+0

如何使用MPVideoPlaybackOverlayView,有什麼建議? – AsifHabib

相關問題