2010-10-28 3 views
5

Я хочу добавить кнопку на свой видеопроигрыватель, когда он играет в полноэкранном режиме. Я создал Overlay на моем видеоплеере, и он отлично работает на iPhone. Я пробовал то же самое на iPad, но кнопка никогда не появляется.Наложение MPMoviePlayer в полноэкранном режиме (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 dosen't создать UIWindow для полноэкранного режима.

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

Спасибо!

ответ

3

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

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

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

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

+1

Вы можете объяснить, как вы относились к ориентации? Был бы рад увидеть какой-то код. Спасибо – Alex1987

+0

Я добавил оверлей таким же образом. Вы решили проблему вращения? – 1110

2

Решение от @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' 
    } 
Смежные вопросы