iOS关于Storyboard中UIWebView的问题

标签 ios xcode video uiwebview storyboard

嘿,所以我一直在对使用 UIWebView 作为 youtube 视频的视频播放器进行大量研究。目前我有一个工作解决方案,它使用 Storyboard 中的 UIWebView 设置来播放 youtube 视频。 UIWebView 将视频显示为预览,单击时视频在标准 IOS 视频播放器中打开,视频播放完毕且用户单击完成后,视频关闭并将控制权返回给应用程序。 Web View 通过 IBOutlet 链接,设置如下所示:

View Controller .h:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property(nonatomic, weak) IBOutlet UIWebView *mainWebView;

- (void)embedYouTube:(NSString *)url coorperateVideo:(UIWebView *)videoWebView;

@end

View Controller .m:
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize mainWebView = _mainWebView;

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"Video Frame Width: %f", _mainWebView.frame.size.width);
    NSLog(@"Video Frame Height: %f", _mainWebView.frame.size.height);

    [self embedYouTube:@"http://www.youtube.com/" coorperateVideo:_mainWebView];
    // Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)embedYouTube:(NSString *)url coorperateVideo:(UIWebView *)videoWebView
{
    NSLog(@"Video Frame Width: %f", videoWebView.frame.size.width);
    NSLog(@"Video Frame Height: %f", videoWebView.frame.size.height);

    NSInteger width = 280;
    NSInteger height = 170;

    videoWebView.allowsInlineMediaPlayback = YES;
    videoWebView.mediaPlaybackRequiresUserAction = NO;
    videoWebView.mediaPlaybackAllowsAirPlay = YES;
    videoWebView.delegate = self;
    videoWebView.scrollView.bounces = NO;
    [videoWebView.scrollView setScrollEnabled:NO];

    NSString *linkObj = @"http://www.youtube.com/v/1iBIcJFRLBA";      //@"http://www.youtube.com/v/6MaSTM769Gk";

    NSString *embedHTML = [NSString stringWithFormat:@"\
    <html><head>\
    <style type=\"text/css\">\
    body {\
    background-color: transparent;color: white;}\\</style>\\</head><body style=\"margin:0\">\\<embed webkit-playsinline id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \\width=\"%d\" height=\"%d\"></embed>\\</body></html>", @"%@", width, height];

    NSString *html = [NSString stringWithFormat:embedHTML, linkObj];
    [videoWebView loadHTMLString:html baseURL:nil];
}

@end

关于 WebView 的设置和处理视频播放器的行为,我有两个问题。

1) 出于某种原因,即使 UIWebView 是在 Storyboard View Controller 中创建的,Web View 也不会通过框架启动。 viewDidLoad 中的两个 NSLog和 coorperateVideo方法为 withs 和 height 返回 0.0。为什么是这样?我的印象是,在 Storyboard中创建的大多数 View 都是使用尺寸检查器中指定的框架启动的。使用前需要设置网页 View 的框架吗?

2)我的第二个问题与按下视频时调用的视频播放器有关。目前,该应用程序已设置为唯一支持的界面方向是纵向。但是,当我单击视频并且播放器显示时,用户无法横向观看视频。有没有办法设置它,以便只有视频播放器 View 可以支持其他方向?

谢谢您的帮助!

最佳答案

为了回答您的第一个问题,我复制/粘贴了您的代码并进行了尝试。它工作正常。两种方法都显示了 Web View 的框架。如果将 UIWebview 拖放到 Storyboard 中,则高度和宽度会显示在尺寸检查器中。如果您愿意,您可以明确提及它。

关于iOS关于Storyboard中UIWebView的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453396/

相关文章:

ios - 如何从 Core Data (swift) 创建 CSV 文件

iphone - 如何在 objective c 的 facebook 组上传图片

ios - 将数学方程转换为字符串

java - 流式传输远程.mp4文件,但仅音频

ios - iOS 6 上的 UIWebView 和客户端证书

objective-c - 启用 ARC 的应用程序将在较低版本的 ios 中运行

iphone - iPad 界面生成器 (xib) 问题

ios - 如何处理 Xcode "pbxproj"文件中的合并冲突?

video - FFmpeg mp4 到 m3u8 但音频不起作用

html - youtube-dl 不适用于所有 YouTube 视频