我試圖獲得在tableview中工作的vine類型視頻源。我希望視頻能像Vine和Instagram一樣在tableview單元格內一次播放一個視頻。XCode - 獲取視頻在像Vine和Instagram這樣的tableview單元格中播放
有誰知道如何做到這一點?我正在使用MPMoviePlayer。
感謝
---- ---- UPDATE
我已經得到了自動播放的號召性行動工作井(請參閱「玩這個一個」)時,每個表格單元格是在中心,但我無法讓多個MPMoviePlayers加載/停止/播放。
我在任何時候只需要一個視頻在其單元格中播放,但我似乎只能在第一個單元格播放視頻並且它不響應停止呼叫(請參閱'不要播放此視頻一個')。
下面是我的腳本的片段。唯一不工作的部分是讓視頻實際播放和停止。打電話和停止工作正常。
我有這個在我的CellForRow:
MPMoviePlayerViewController *videoPlayer;
[videoPlayer.view removeFromSuperview];
videoPlayer = [[MPMoviePlayerViewController alloc] init];
int videoTag = 500+indexPath.row;
[videoPlayer.view setTag:videoTag];
videoPlayer.moviePlayer.repeatMode = MPMovieRepeatModeOne;
videoPlayer.moviePlayer.controlStyle = MPMovieControlStyleNone;
videoPlayer.view.frame = CGRectMake(0, 0, 320, 320);
[videoPlayer.view setBackgroundColor:[UIColor whiteColor]];
[playerView addSubview:videoPlayer.view];
我做這個調用正確的細胞在視圖中心:
- (void)scrollViewDidScroll:(UIScrollView *)theView{
UITableViewCell *cell = (UITableViewCell *) theView;
CGPoint currentOffset = theView.contentOffset;
for (UITableViewCell *cell in [videoTableView visibleCells]) {
NSIndexPath *indexPath = [videoTableView indexPathForCell:cell];
int videoTag = 500+indexPath.row;
MPMoviePlayerViewController *videoPlayer = (MPMoviePlayerViewController *)[cell viewWithTag:videoTag];
UILabel *test_label = (UILabel *)[cell viewWithTag:300];
CGRect cellRect = [videoTableView convertRect:cell.bounds fromView:cell];
int scrollPosition = currentOffset.y + 64; // 64px is the navigation bar height
int cellPosition = cellRect.origin.y;
if(scrollPosition > cellPosition-100 && scrollPosition < cellPosition+100)
{
test_label.text = [NSString stringWithFormat:@"Play this one" ];
UIView *blankOut = (UIView *)[cell viewWithTag:200];
UIView *playerView = (UIView *)[cell viewWithTag:201];
UIImageView *videoCoverUp = (UIImageView *)[cell viewWithTag:202];
[playerView.layer setCornerRadius:138];
[playerView.layer setMasksToBounds:YES];
if(_isPlaying!=true){
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"video.mp4"];
NSData *video_data = _tableObjects[indexPath.row][9];// Where my video data is stored
[video_data writeToFile:path atomically:YES];
NSURL *moveUrl = [NSURL fileURLWithPath:path];
videoPlayer.moviePlayer.contentURL = moveUrl;
[videoPlayer.moviePlayer prepareToPlay];
[videoPlayer.moviePlayer play];
_isPlaying = true;
// Needed
[[UIApplication sharedApplication] setStatusBarHidden:NO];
[self setNeedsStatusBarAppearanceUpdate];
}
} else {
test_label.text = [NSString stringWithFormat:@"Don't play this one" ];
[videoPlayer.moviePlayer stop];
[videoPlayer.moviePlayer setContentURL:[NSURL URLWithString:nil]];
[videoPlayer.moviePlayer prepareToPlay];
//[_videoPlayer.moviePlayer.view removeFromSuperview];
_isPlaying = false;
}
}
}
是的,你可能會找到一些有想法的人。但如果你想獲得幫助,你需要做一些研究,實施一些事情,然後發佈,如果你遇到了錯誤或編碼障礙。有什麼搜索給你的「藤蔓教程ios」?你已經試過了什麼? :) – 2015-02-24 13:59:40
嗨。我試過研究,但還沒有找到有用的東西。我已經使用當前的腳本更新了我的帖子,所以您可以使用我目前的功能。視頻不會播放或停止,但號召性用語正在發揮作用。 – CaptainJ 2015-02-24 14:18:38
您是否解決了這個問題?我也遇到了與AVPlayer相同的問題 – Infaz 2015-07-27 06:11:49