Оверлей MPMoviePlayer в полноэкранном режиме (iPad) - PullRequest
5 голосов
/ 28 октября 2010

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

Вот мой код:

 NSArray *windows = [[UIApplication sharedApplication] windows];
 if ([windows count] > 1){
       UIWindow * moviePlayerWindow = [windows objectAtIndex:1];
       NSArray * subviews = [moviePlayerWindow subviews];
       UIView * videoView = [subviews objectAtIndex:0];
       [videoView addSubview:myButton];
}

Это похоже на то, что ipad не создает UIWindow для полноэкранного режима.

Кто-нибудь знает, как я могу это сделать?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 23 ноября 2010

Я нашел решение этой проблемы несколько недель назад:

Кажется, что этот метод не работает на iPad (я не проверял iPhone SDK 4>), поэтому для его обхода вы можете сделать следующее.

После добавления видео и настройки в полноэкранном режиме вы можете добавить свои элементы управления непосредственно в окно UIWindow (например, [[[[UIApplication sharedApplication] windows] objectAtIndex: 0] addSubView: myView]), после чего они появятся поверх вашего видео. видео.

Единственная проблема, с которой я столкнулся, заключается в том, что они не подчиняются правилам ориентации вида, и мне пришлось вручную программировать код поворота в методе willRotateToInterfaceOrientation вида.

2 голосов
/ 03 февраля 2012

Решение от @tigermain работает.

[[[[UIApplication sharedApplication] windows] objectAtIndex:0] addSubView:myView]

Но виды, добавленные в окно, не следуют ориентации.

Решением для ориентации является использование NSNotificationCenter, UIApplicationDidChangeStatusBarOrientationNotification.

    // assign a notification
    id center = [NSNotificationCenter defaultCenter];
    [center addObserver:self
             selector:@selector(didRotate:)
                 name:UIApplicationDidChangeStatusBarOrientationNotification
               object:nil];

    // this method will get called when the orientation changes
    -(void) didRotate:(NSNotification*)notification {

        UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
        NSLog(@"%d", orientation);
        // ... transform view accordingly to the enum 'UIInterfaceOrientationXXX'
    }
...