2

ねえ、私はUIWebViewをYouTubeビデオのビデオプレーヤーとして使用することについて多くの研究を行ってきました。現在、ストーリーボードで UIWebView セットアップを使用して YouTube ビデオを再生する実用的なソリューションがあります。UIWebView は、ビデオをプレビューとして表示します。クリックすると、標準の IOS ビデオ プレーヤーでビデオが開き、ビデオが終了してユーザーがクリックすると、ビデオが閉じて、コントロールがアプリに戻ります。Web ビューは IBOutlet を介してリンクされ、次のように設定されます。

ViewController.h:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

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

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

@end

ViewController.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

Web ビューのセットアップとビデオ プレーヤーの動作の処理に関して 2 つの質問があります。

1) UIWebView がストーリーボード ビュー コントローラーで作成されているにもかかわらず、何らかの理由で Web ビューがフレームで開始されません。viewDidLoadメソッドとメソッドの両方の NSLog はcoorperateVideo、withs と height に対して 0.0 を返します。どうしてこれなの?ストーリーボードで作成されたほとんどのビューは、サイズ インスペクタで指定されたフレームで開始されるという印象を受けました。Web ビューを使用する前にフレームを設定する必要がありますか?

2) 私の 2 番目の質問は、ビデオが押されたときに呼び出されるビデオ プレーヤーに関するものです。現在、アプリは、サポートされているインターフェイスの向きが縦向きのみになるように設定されています。ただし、ビデオをクリックしてプレーヤーが表示されると、ユーザーはビデオを横向きで表示することが制限されます。ビデオ プレーヤー ビューのみが他の方向をサポートできるように設定する方法はありますか?

助けてくれてありがとう!

4

2 に答える 2

0

最初の質問に答えるために、コードをコピーして貼り付けて試しました。その正常に動作します。どちらの方法でも Web ビューのフレームが表示されます。UIWebview をストーリーボードにドラッグ アンド ドロップすると、高さと幅がサイズ インスペクタに表示されます。必要に応じて、明示的に言及できます。

于 2017-01-10T08:14:35.350 に答える