2

我正在开发和应用程序,我希望在页面中有一个 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;
}

该视图在纵向和横向上都可以正常工作。问题是当我看到全屏视频并旋转时。当我完成全屏时,webview 没有检测到旋转并将 webview 打印为错误的方式。

我如何检测到 Youtube 全屏正在旋转以旋转我的视图?

谢谢

4

3 回答 3

0

将内容宽度设置为 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>

……

于 2011-12-13T17:14:54.090 回答
-1

我像这样使用 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];
    }
}

希望有帮助

于 2012-05-02T06:52:35.243 回答
-1

我假设您已经在处理方向回调?(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
于 2011-11-14T22:00:07.927 回答