Принудительный портретный режим при воспроизведении видео с YouTube в UIWebView - PullRequest
1 голос
/ 15 ноября 2011

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

Я использовал этот метод (NB iPhoneDevSDK.com в настоящее время помечен Google как содержащий вредоносное ПО, поэтому будьте осторожны. Я загрузил снимок экрана с соответствующим постом ) , чтобы открыть и воспроизвести видео на YouTube (используя скрытый UIWebView),

Видео, которое я хочу показать, было записано в портретном режиме (загружено в формате 320x480) и предназначалось для полного заполнения экрана iPhone в портретном режиме.Однако видео YouTube запускается в принудительном альбомном режиме, и его можно перевести в портретный режим, переместив телефон в альбомную позицию, а затем вернув его назад (иногда это необходимо сделать несколько раз).

Что ямне интересно: есть ли способ заставить UIWebView открыть видеоплеер, который по умолчанию работает в портретном режиме?

NB Я установил (interfaceOrientation == UIInterfaceOrientationPortrait) для делегата UIWebView, который порождает UIWebView.

Редактировать: я даже пытался создать подкласс UIWebView на случай, если это получитсяработа:

@interface AltWebView : UIWebView
@end

@implementation AltWebView

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end
  • Первое изображение: видео по умолчанию воспроизводится в альбомной ориентации
  • Второе изображение: Портретный режим несколько раз повернут

In Landscape by default In Portrait mode once rotated a few times

Ответы [ 2 ]

4 голосов
/ 31 января 2012

Я недавно столкнулся с той же проблемой и использовал этот код. Возможно, это неправильный ответ на ваш вопрос, но он воспроизводит видео YouTube в портретном режиме.

NSString *embedHTML = @"<iframe title=\"YouTube video player\" width=\"320\" height=\"460\" scrolling=\"no\" src=\"http://www.youtube.com/embed/%@?modestbranding=1&amp;rel=0;autoplay=1;showinfo=0;loop=1;autohide=1\" frameborder=\"0\" allowfullscreen allowTransparency=\"true\"></iframe>"; 

NSString *htmlStr = [NSString stringWithFormat:embedHTML, videoID];  // videoID is like EgXdUs9HsrQ...  

[webView loadHTMLString:htmlStr baseURL:nil]; 
1 голос
/ 15 ноября 2011

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

Что-то вроде, скажем:

- (void)viewWillAppear:(BOOL)animated {
    [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
}

и

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

Кстати, есть полезный вопрос с множеством полезных советов по адресу: iPhone SDK:Ориентация (Пейзаж и Портрет)

...