iPad MPMoviePlayerController - отключить полноэкранный режим - PullRequest
14 голосов
/ 06 сентября 2010

Есть ли способ отключить полноэкранную кнопку MPMoviePlayerController?

Ответы [ 16 ]

2 голосов
/ 06 июля 2011

Полноэкранную кнопку вместе с кнопкой паузы можно удалить.

[self.videoPlayer setControlStyle:MPMovieControlStyleNone];
2 голосов
/ 02 декабря 2010

Wired делает это. Для видео, которые запускаются в полноэкранном режиме, они имеют стандартные элементы управления MPMoviePlayerController, но не имеют полноэкранных кнопок. И они используют стандартные встроенные, так как они внезапно получили кнопку AirPlay с 4.2.

1 голос
/ 29 марта 2016

Это Swift-версия первого решения Хавьера Калатравы Llavería:

func hideFullScreenButton() {
    self.hideFullScreenSubview((self.moviePlayerController?.view.subviews)!)
}

func hideFullScreenSubview(subviews: [UIView]) {
    for view: UIView in subviews {
        if view.subviews.count > 0 {
            self.hideFullScreenSubview(view.subviews)
        }
        if view.frame.origin.x == 631 {
            view.hidden = true
        }
    }
}

А когда пользователь нажимает на Play:

self.performSelector(#selector(VideoViewController.hideFullScreenButton), withObject: self, afterDelay: 0.5)

(VideoViewController является контроллером представления вкоторый у меня есть MPMoviePlayerController)

1 голос
/ 01 июля 2012

Если вы хотите сделать only , это отключить пинч, чтобы перейти в полноэкранный режим (т.е. оставить взаимодействие включенным и любой стиль управления, какой вы хотите), вы можете использовать это:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    NSSet *set = [event allTouches];
    NSArray *arr = [set allObjects];
    for (int i = 0; i < arr.count; i++) {
        UITouch *touch = (UITouch *) [arr objectAtIndex:i];

        NSArray *recognisers = touch.gestureRecognizers;
        for (UIGestureRecognizer *recogniser in recognisers) {
            if (recogniser.enabled && [recogniser isMemberOfClass:[UIPinchGestureRecognizer class]]) {
                recogniser.enabled = NO;
            }
        }
    }
}
0 голосов
/ 13 августа 2015

Поместите UIView или UIButton с прозрачным фоном поверх представления, отображающего видео, чтобы пользователь не смог нажать на представление, содержащее видео.

0 голосов
/ 16 апреля 2012

Я знаю, это немного устарело, но в любом случае. Я провел некоторые исследования в этом направлении, и, похоже, нашел ответ. Я не знаю, почему это работает, но это так.

-(void) playMovieAtURL: (NSURL*) theURL {

    MPMoviePlayerController* theMovie =
    [[MPMoviePlayerController alloc] initWithContentURL: theURL];
    //That line is for ARC. Without it, it may not work.
    self.moviePlayer = theMovie;
    theMovie.scalingMode = MPMovieScalingModeAspectFill;
    theMovie.controlStyle = MPMovieControlStyleFullscreen;
    theMovie.repeatMode  = MPMovieRepeatModeOne;
    //Here you'd better use your custom ViewController subclass, if you want autorotating and all that stuff.
    UIViewController * vc = [UIViewController new];
    [vc.view addSubview:theMovie.view];
    theMovie.fullscreen  = YES;
    theMovie.view.frame = vc.view.bounds;
    vc.view = theMovie.view;
    [self presentModalViewController:vc animated:YES];
    theMovie.fullscreen  = YES;

    [theMovie prepareToPlay];
    [theMovie play];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}

// Когда фильм закончится, отпустите контроллер.

-(void) myMovieFinishedCallback: (NSNotification*) aNotification
{
    [self dismissModalViewControllerAnimated:YES];
    MPMoviePlayerController* theMovie = [aNotification object];
    [[NSNotificationCenter defaultCenter]
 removeObserver: self
 name: MPMoviePlayerPlaybackDidFinishNotification
 object: theMovie];
    [self.moviePlayer.view removeFromSuperview];
    self.moviePlayer = nil;
    // Release the movie instance created in playMovieAtURL:
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...