IOS, Youtube полный экран в веб-просмотре вращается - PullRequest
2 голосов
/ 15 ноября 2011

Я разрабатываю и приложение, которое я хочу видео на YouTube на странице.Он работает нормально с кодом ниже:

-(void)viewDidLoad{
    [super viewDidLoad];

}

- (void) viewWillAppear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:NO animated:YES];
    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:.47 green:.43 blue:.4 alpha:1];

}

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    //return (interfaceOrientation == UIInterfaceOrientationPortrait);
    NSString *htmlString;
    if(interfaceOrientation == UIInterfaceOrientationPortrait){
        htmlString = [NSString stringWithFormat:@"<html><head><meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = no, width = 20\"/></head><body style=\"background:#F00;margin-top:0px;margin-left:0px\"><div><object width=\"768\" height=\"960\"><param name=\"movie\" value=\"%@\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"%@\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"768\" height=\"960\"></embed></object></div></body></html>",urlToOpen,urlToOpen];

    }else{
        htmlString = [NSString stringWithFormat:@"<html><head><meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = no, width = 212\"/></head><body style=\"background:#F00;margin-top:0px;margin-left:0px\"><div><object width=\"1024\" height=\"704\"><param name=\"movie\" value=\"%@\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"%@\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"1024\" height=\"704\"></embed></object></div></body></html>",urlToOpen,urlToOpen];

    }
    [self.webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"http://www.youtube.com"]];
    return  YES;
}

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

Как я могу определить, что полноэкранный режим Youtube вращается для поворота моего просмотра?* Thankyou

Ответы [ 3 ]

0 голосов
/ 13 декабря 2011

установить ширину содержимого на 100%

мой шаблон

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> \
<html xmlns=\"http://www.w3.org/1999/xhtml\"> <head> \
<meta name=\"viewport\" content=\"width=320\"> \
<style> \
html,body {-webkit-text-size-adjust: none; size:100%%} \
body {margin: 0; padding: 0;width:100%;} \
table { font-family:Georgia; font-size:%dpt; border-style: none; size:100%%} \
</style> </head>

....

0 голосов
/ 02 мая 2012

Я решил эту проблему с помощью NSNotification, как это

    [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlayerDidExitFullScreen)
                                             name:@"UIMoviePlayerControllerDidExitFullscreenNotification"
                                           object:nil];

и метод, который будет вызван:

- (void)moviePlayerDidExitFullScreen
{
    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;

    if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight || orientation == UIInterfaceOrientationPortraitUpsideDown) 
    {
        [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
    }
}

Надеюсь, что поможет

0 голосов
/ 15 ноября 2011

Я предполагаю, что вы уже обрабатываете обратные вызовы ориентации? (shouldAutorotateToInterfaceOrientation, didRotateFromInterfaceOrientation)

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

UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;

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

Вы можете сделать это в операторе switch:

switch(orientation) {
    case UIInterfaceOrientationLandscapeLeft:  //layout for this landscape mode
    case UIInterfaceOrientationPortraitUpsideDown:  //layout for this portrait mode
...