iphone: вращение в mpmovieplayercontroller? - PullRequest
0 голосов
/ 03 апреля 2011

У меня есть небольшое представление поверх контроллера mpmovieplayer.Когда он не полноэкранный, я могу настроить рамку вида в соответствии с ориентацией (когда устройство вращается).Но когда я вхожу в полноэкранный режим, хотя мне удается представить вид, я больше не могу поддерживать правильный кадр, когда устройство вращается.Похоже, в полноэкранном режиме система просто использует CGAffineTransformRotate в строке состояния и moviePlayer.Как я могу применить этот CGAffineTransformRotate для правильного вращения моего вида?


РЕДАКТИРОВАТЬ:

Хорошо, поэтому я обновил код, чтобы повернуть на 90% по оси X после изменения ориентацииконтроллер mpmovieplayer, но вид просто исчезает после первого поворота.Вот мой код:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{


     float   angle = M_PI / 2;  //rotate 180°, or 1 π radians
     theView.layer.transform = CATransform3DMakeRotation(angle, 1.0, 0.0, 0.0);


    [self changePositionBasedOnOrientation:toInterfaceOrientation]; //here we change the frame of the view


}

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

Хорошо,

Так что лучший способ наложения mpmovieplayercontroller в полноэкранном режиме это так:

[[[[[UIApplication sharedApplication] keyWindow] subviews] objectAtIndex:0] addSubview:mySubview]

Это немного хакерский, но законный.Это дает вам простой способ иметь дело с вращениями (вместо использования преобразований).

2 голосов
/ 03 апреля 2011

Я не уверен, что это обязательно будет правильный способ сделать это (я полагаю, вы добавляете подпредставление к представлению MPMoviePlayerController?), Но то, что вы видите послеявляется обратным вызовом, когда проигрыватель фильма вращается в полноэкранном режиме, чтобы вы могли настроить свои собственные пользовательские виды.

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

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(layoutViewForOrientation:)
    name:UIDeviceOrientationDidChangeNotification
    object:nil];

Вы должны запомнить endGeneratingDeviceOrientationNotifications и удалить наблюдателя уведомлений, когда закончите в полноэкранном режиме.

...