在Uiwebview中显示视频而不是设备全屏

时间:2013-07-29 10:46:35

标签: iphone ios ios5 ios6 ios4

我想在UIWebview中显示视频。当我们点击视频时,它会在设备全屏播放。

我们如何在UIWebview中播放视频? 请注意,这些视频文件托管在youtube或我们的服务器上。他们没有与app

捆绑在一起

3 个答案:

答案 0 :(得分:4)

我认为你应该尝试UIWebView类的这个属性。

  

allowsInlineMediaPlayback

     

一个布尔值,用于确定HTML5视频是否内联播放   使用原生全屏控制器。

答案 1 :(得分:3)

我有同样的要求,在UIWebView内部播放视频内联。此外,我需要立即播放视频,而无需等待用户按下播放按钮。

为此,我将此属性添加到UIWebView:

webView.allowsInlineMediaPlayback = YES;

然后,在组合中还需要添加" webkit-playsinline"属性包含在提供视频源URL的网页上的HTML5视频元素中。

<video src="assets/myMovie.m4v" webkit-playsinline></video>

请参阅apple doc:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/index.html#//apple_ref/doc/uid/TP40006950-CH3-SW32

这是我完整的Obj-C示例,用于创建全屏UIWebView。将其添加到UIViewController的viewDidLoad方法:

NSURL *websiteUrl = [NSURL URLWithString:@"http://example.com/myMovie.m4v"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:websiteUrl];

UIWebView * webView = [[UIWebView alloc] init];
webView.allowsInlineMediaPlayback = YES;
webView.mediaPlaybackRequiresUserAction = NO;
webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];
[webView setTranslatesAutoresizingMaskIntoConstraints:NO];
[webView loadRequest:urlRequest];
[self.view addSubview:webView];

// Width constraint
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:webView
                                                      attribute:NSLayoutAttributeWidth
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeWidth
                                                     multiplier:1
                                                       constant:0]];

// Height constraint
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:webView
                                                      attribute:NSLayoutAttributeHeight
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeHeight
                                                     multiplier:1
                                                       constant:0]];

// Center horizontally
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:webView
                                                      attribute:NSLayoutAttributeCenterX
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeCenterX
                                                     multiplier:1.0
                                                       constant:0.0]];

// Center vertically
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:webView
                                                      attribute:NSLayoutAttributeCenterY
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:self.view
                                                      attribute:NSLayoutAttributeCenterY
                                                     multiplier:1.0
                                                       constant:0.0]];

答案 2 :(得分:0)

要在UIWebView中播放视频,请使用以下代码....

NSString *strVedio = @"<video controls> <source src=\"YourVideo.mp4\"> </video>";
NSString *path = [[NSBundle mainBundle] pathForResource:@"YourVideo" ofType:@"mp4"];
[Webview loadHTMLString:strVedio baseURL:[NSURL fileURLWithPath:path]];

<强>更新

使用以下代码在UIWebView视频网址中显示视频...

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

  NSString *strHtml = [NSString stringWithFormat:embedHTML, yourURLString, width,height];//set width and height which you want

  [webView loadHTMLString:strHtml baseURL:nil];
  [self.view addSubview:webView];

如果您只想在小屏幕上显示而没有使用webview,请使用以下代码..

MPMoviePlayerController *videoPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:url]];
[player setControlStyle:MPMovieControlStyleNone];

player.view.frame = CGRectMake(0, 0, 150, 150);

[self.view addSubview:videoPlayer.view];