2

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

视图控制器.h:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

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

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

@end

视图控制器.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

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

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

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

谢谢您的帮助!

4

2 回答 2

0

我已经运行过相同的代码,发现工作完美。按照上面的建议,做一件事从情节提要中删除 UIWebview。然后为其提供适当的约束。它会工作......干杯..

于 2017-03-24T03:24:35.080 回答
0

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

于 2017-01-10T08:14:35.350 回答