Search code examples
iosobjective-cvideompmovieplayercontrollericarousel

Loading MPMovieControl for ICarousel Not Working Correctly


I am trying to achieve a iCarousel of Video URLS to allow users to see others posts. Now i have to say i love iCarousel and this has been my only issue with it.

I have the right number of carousel objects showing up and the play button is on all of them though i'm only receiving one video at a time and the controls are not playing the video properly.

I have an NSMutableArray in place holding the _videoURLS, this is where i provide the number of carousel objects that need to be via [_videoURLS count];

In my .m file this is how i am preparing the video player with the carousel object

 - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view

 {

 if (view == nil)

  {   

    UIView *mainView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200.0f, 370.0f)];

    view = mainView;

    CGFloat mainViewWidth = mainView.bounds.size.width;



    //Video Player View

    _videoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, mainViewWidth, 220)];

    _videoView.backgroundColor = [UIColor colorWithRed:123/255.0 green:123/255.0 blue:123/255.0 alpha:1.0];

    _videoView.center = CGPointMake(100, 170);

    _videoView.tag = 7;

    [view addSubview:_videoView];



    //video

    _player = [[MPMoviePlayerController alloc] init];

    [_player.view setFrame:_videoView.bounds];

    [_player prepareToPlay];

    [_player setShouldAutoplay:NO];

    _player.scalingMode = MPMovieScalingModeAspectFit;

    _player.controlStyle = MPMovieControlStyleNone;

    [_videoView addSubview:_player.view]; 



    //Play Button

    _playButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60.0f, 60.0f)];

    [_playButton setBackgroundImage:[UIImage imageNamed:@"play-icon-grey.png"] forState:UIControlStateNormal];

    [_playButton addTarget:self.view.superview action:@selector(postThread:) forControlEvents:UIControlEventTouchUpInside];

    _playButton.center = CGPointMake(100, 160);

    _playButton.tag = 3;

    [view addSubview:_playButton];      

}

else

{

    //get a reference to the label in the recycled view

    _playButton = (UIButton *) [view viewWithTag:3];

    _videoView = (UIView *) [view viewWithTag:7];

}

//Setting Video For Each Carousel

for (int i = 0; i < 9; i++) {

    [_player setContentURL:[NSURL URLWithString:[_videoURLS objectAtIndex:index]]];

    NSLog(@"Object Link: %@",[_videoURLS objectAtIndex:index]);

}    

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishPlaying:) name:MPMoviePlayerPlaybackDidFinishNotification object:_player];

return view;

}

It works very well if i have one object in the carousel and can handle just one video, i have to be able to handle 10 videos on the carousel and if possible have them load when its focused.

From Personal experience i feel it would be the way each item is being drawn to the screen, i just cant get my finger on the issue.

Any help is greatly appreciated!!


Solution

  • Per the apple documentation I found out this is not capable of being done, I have chose to use the AVFoundation Framework