【问题标题】:Youtube player in table cell landscape mode表格单元横向模式下的 Youtube 播放器
【发布时间】:2013-08-23 11:55:24
【问题描述】:

我有一个只支持纵向模式的应用程序,它有一个表格,每个单元格都包含一个标题和一个带有 YouTube 视频的 web 视图。

现在你会如何让 Youtube 播放器同时处于横向和纵向模式?

    [cell.titleLabel setText:[[[StoreVars sharedInstance].sharedArrayOfVideo objectAtIndex:indexPath.row] objectForKey:@"title"]];
    NSString *ID = [[[StoreVars sharedInstance].sharedArrayOfVideo objectAtIndex:indexPath.row] objectForKey:@"id"];
    NSString *code = [NSString stringWithFormat:@"<iframe width=\"280\" height=\"170\" src=\"//www.youtube.com/embed/%@\" frameborder=\"0\" allowfullscreen></iframe>",ID];
    NSLog(@"Loading video: %@",code);
    [cell.videoWebView loadHTMLString:code baseURL:[NSURL URLWithString:@"http:"]];
    [cell.videoWebView.scrollView setScrollEnabled:NO];
    [cell.videoWebView.scrollView setBounces:NO];

我四处搜索,找到了这样的代码,但我无法访问单元格 webview。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if(webView && webView.superView) return YES;
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}

【问题讨论】:

    标签: ios objective-c uitableview uiwebview youtube


    【解决方案1】:

    如果您正在为 iOS 6.0 及更高版本进行开发,我建议您使用 -supportedInterfaceOrientations

    但是,我不建议使用这种方法来旋转单元格,因为我很确定它不会在设备改变它的方向时一直被调用(尤其是如果父控制器已经禁用横向)。您可以尝试在(子类)单元格中收听UIDeviceOrientationDidChangeNotification 以旋转 webview 和视图控制器(使用表格视图)并在表格视图上运行 -reloadData 以正确调整单元格的大小(假设景观webview 比纵向 webview 高得多)

    【讨论】:

    • 嗯....要么我不明白你的答案,要么你错过了什么。单击 webView(仅包含嵌入的视频)时,它会打开需要能够旋转的 YouTube 播放器。据我所知,我无法访问它的视图控制器。
    • 不,你没有错过什么,但我错过了。我只是误解了这个问题。你这里说的是系统视频播放器吗?
    • 是的,我认为这就是加载视频的原因。
    • 如果您不尝试全屏显示视频(系统播放器developer.apple.com/library/ios/DOCUMENTATION/MediaPlayer/… 可以做到这一点)它可能仍然适用于我上面发布的解决方案,因为我猜视频播放器在 webview 顶部显示视频视图(您正在旋转方向更改通知)。这只是一个猜测。您可以在这里找到(方式)更好的解决方案:
    猜你喜欢
    • 2012-12-02
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 2015-07-16
    • 1970-01-01
    相关资源
    最近更新 更多