Как правильно вращать MPMoviePlayerController? - PullRequest
2 голосов
/ 09 августа 2011

У меня возникли некоторые проблемы при правильном вращении экземпляра MPMoviePlayerController.Я хочу, чтобы он вращался в зависимости от ориентации iPad.Обычно это работает.Иногда, однако, происходит что-то странное, и затем это происходит до тех пор, пока я не перезапущу программу.

Вот мой код инициализации:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Drew 320x240" ofType:@"mp4" inDirectory:nil];
myMPC = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];

[[myMPC view] setFrame: CGRectMake(0, 0, 597, 448)];
myMPC.view.transform = CGAffineTransformMakeRotation(SP_D2R(-90));
myMPC.view.center = CGPointMake(364, (850 / 2) + 168);

Вот мой код ориентации:

    -(void)orientationDetected:(UIEvent *)event{
    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft) {
        if (myMPC) {
            myMPC.view.transform = CGAffineTransformMakeRotation(SP_D2R(90));
            myMPC.view.center = CGPointMake(405, (850 / 2));
        }
    } else if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
        if (myMPC) {
            myMPC.view.transform = CGAffineTransformMakeRotation(SP_D2R(-90));
            myMPC.view.center = CGPointMake(364, (850 / 2) + 174);
        }
    }
}

А вот несколько скриншотов.Первые два, как они должны быть (один с кнопкой домой слева, а другой с кнопкой домой справа), третий - винт.Вот они:

Landscape Home Button Left

Landscape Home Button Right

Screw Up

Как видите, видео мальчика выходит изposition и оставляет черноту там, где она должна была быть (хотя черный прямоугольник не совсем там, где он должен был быть - в этом примере он должен быть больше слева).Как только это происходит, все последующие повороты устройства приводят к этому (до перезапуска программы).

Это не специфическая проблема симулятора, как это происходит на реальном iPad.Опять же, иногда он вращается нормально.Есть что-то, чего мне не хватает / кто-нибудь знает, почему это происходит / кто-нибудь знает, как это предотвратить?

Я ценю помощь.

Спасибо, Илья

РЕДАКТИРОВАТЬ: Добавлен код инициализации и теперь вставлены картинки.

Ответы [ 2 ]

1 голос
/ 11 августа 2011

У меня были похожие проблемы при первом использовании MPMoviePlayerController.Ориентация просто не работает для меня.

Я обнаружил: MPMoviePlayerViewController (содержит MPMoviePlayerControlle)

Используя этот новый класс, яне было больше проблем с ориентацией.Я также смог определить свои собственные ориентации в shouldAutorotateToInterfaceOrientation, подклассифицировав его.(Чувствуется как магия: P)

Помните, что класс MPMoviePlayerViewController называется [self presentMoviePlayerViewControllerAnimated:(MPMoviePlayerViewController)]

Управление ориентацией так, как вы это делаете прямо сейчас, очень утомительно иподвержен ошибкам.

Это можно сделать намного проще, используя встроенные в среду классы.

HTH

0 голосов
/ 30 марта 2012

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

Попробуйте выполнить инициализацию следующим образом:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Drew 320x240" ofType:@"mp4" inDirectory:nil];
myMPC = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];

[[myMPC view] setFrame: CGRectMake(0, 0, 597, 448)];
[[myMPC view].layer setAnchorPoint:CGPointMake( 0.5, 0.5 )]; // center of your view

Теперь видео должно вращаться вокруг своего центра.

Более подробную информацию вы можете найти в Документах Apple здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...