2015-10-19 71 views
2

我必須播放來自服務器的視頻,它需要一些時間。所以我寫了一個activityIndi​​cator並開始動畫。但活動指示器在視頻播放前不顯示。冷杉我隱藏的活動指標後來不隱藏它,並開始動畫,但它顯示視頻開始播放時。活動指標不適用於iOS?

這裏是我的代碼: 的信息indicatorView is a UIView和我indView is an UIIndicatorView裏面的UIView;我正在使用AV Player播放;

請閱讀顯然,指標視圖顯示在視圖中,但問題沒有顯示出來時,我說開始動畫,但一段時間後視頻開始。

indicatorView.hidden = NO; 
    [indView startAnimating]; 

//在這裏,在視圖中顯示指示器視圖必須,但它沒有顯示出來;

MediaItem *item = [allVideos objectAtIndex:indexPath.row]; 
    [playerModel playMyVideo:item]; 

//現在經過5秒時,這裏是視頻準備播放它顯示了

有什麼問題。 我用在這兩個地方dispach非同步,但沒有用

+0

請更改指標視圖的顏色。可能是白色的,所以你不能識別它。 –

+0

您正在使用哪個播放器播放視頻? – abhi1992

+0

AVPlayer正在使用 –

回答

2

只需添加一個方法類似,

-(void) videoPrepareToPlay { 
    MediaItem *item = [allVideos objectAtIndex:indexPath.row]; 
    [playerModel playMyVideo:item]; 
} 

,並調用該方法一樣,

indicatorView.hidden = NO; 
    [indView startAnimating]; 
    [self performSelector:@selector(videoPrepareToPlay) withObject:nil afterDelay:0.2]; 

它可能適合你..

+1

哈哈哈1秒擊敗你到底:d http://stackoverflow.com/a/33209052/2057171 –

+2

你應該使用'inModes:@ [NSRunLoopCommonModes]'喜歡我的參數在我的代碼做否則某些UI元素(例如UIScrollView)在您的3秒延遲期間不會變得棘手。另外爲什麼使用3秒的延遲而不是0.0001秒的延遲? –

+1

是的,我們可以在您的答案中提及您。 – jigs

2

我用dispach非同步在兩個地方,但沒有用

但就是這個代碼被主線程上運行? UI更新應該在主線程上執行。

dispatch_async(dispatch_get_main_queue(), ^{ 
    //UI code 
}); 
+0

嘗試過,但無法正常工作... Gui派發是當玩家完成執行時得到了它的時間 –

2

變化[playerModel playMyVideo:item];

[playerModel performSelector:@selector(playMyVideo:) withObject:item afterDelay:0.0001f inModes:@[NSRunLoopCommonModes]];

+1

@SUDHAKARRAYAPUDI是什麼?除了我先發布之外,這與接受的答案相同。這是如何,但有時不工作,所有的時間,但你接受了我的後貼有相同的代碼的答案,但神奇地運行所有的時間? –

+0

嘿,我真的不知道。但不知何故,他的代碼工作正常,但你的工作有時不是所有的時間......可能是因爲他添加了額外的方法。但是我已經投票了,因爲你的貢獻。你投下了我的問題......我沒關係。但由於 –

+0

@SUDHAKARRAYAPUDI添加一個方法名稱完全不影響的代碼。如果「有時但不是所有的工作時間」是一個有效的聲明,我真的無法相信它是,但如果是,那麼你需要做你的應用程序更多的測試,因爲它會與他的代碼再次失敗爲好,因爲它等同於我的... –

1

使用performSelectorOnMainThread執行ActivityIndi​​cator代碼並使用後臺線程檢索視頻。

ELSE

簡易修復:

使用此https://github.com/jdg/MBProgressHUD

+0

我不願意添加任何第三方,但我還是謝謝你 –

+0

@SUDHAKARRAYAPUDI爲什麼?????????????????????????????? –

+0

嘿阿爾伯特普通人。因爲我的客戶不想要任何第三方 –