嘿,所以我一直在对使用 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)我的第二个问题与按下视频时调用的视频播放器有关。目前,该应用程序已设置为唯一支持的界面方向是纵向。但是,当我单击视频并且播放器显示时,用户无法横向观看视频。有没有办法设置它,以便只有视频播放器视图可以支持其他方向?
谢谢您的帮助!