私はインターネットで見つけたスニペットを介してYouTubeからビデオを埋め込みました、これが私が使用したコードです:
@interface FirstViewController (Private)
- (void)embedYouTube:(NSString *)urlString frame:(CGRect)frame;
@end
@implementation FirstViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self embedYouTube:@"http://www.youtube.com/watch?v=l3Iwh5hqbyE" frame:CGRectMake(20, 20, 100, 100)];
}
- (void)embedYouTube:(NSString *)urlString frame:(CGRect)frame {
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 *html = [NSString stringWithFormat:embedHTML, urlString, frame.size.width, frame.size.height];
UIWebView *videoView = [[UIWebView alloc] initWithFrame:frame];
[videoView loadHTMLString:html baseURL:nil];
[self.view addSubview:videoView];
[videoView release];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
それは正しくコンパイルされ、それを開くと、コードが作成した白いボックスが正しく配置されていません。それに関して2つの質問があります。
ビデオが再生されるかどうかを確認するにはどうすればよいですか?それは単なる白いボックスですが、シミュレーターはYouTubeからビデオを再生しますか?
このボックスを配置するにはどうすればよいですか?
コードをテストしたところ、iPhoneでは問題なく動作しましたが、iOSシミュレータではYouTube動画はサポートされていないため、テストには実際のデバイスが必要になります。
このボックスを配置するにはどうすればよいですか?
この行では、ボックスのX(20)、Y(20)、width(100)、height(100)をすでに渡しています。
[self embedYouTube:@"http://..." frame:CGRectMake(20, 20, 100, 100)];
後でビューの位置を変更するには、その中心プロパティを変更します。
videoView.center = CGPointMake(200, 100 );
これがサンプルコードです。iOS5以降で正常に動作します。これはYoutube APIが提供した新しい実装です。ここでmyWeb
はUIWebViewです。 showinfo=0
in URLは、videoViewの上部ヘッダーを削除します。
NSString *html = [NSString stringWithFormat:@"<html><body><iframe class=\"youtube-player\" type=\"text/html\" width=\"%f\" height=\"%f\" src=\"http://www.youtube.com/embed/q1091sWVCMI?HD=1;rel=0;showinfo=0\" allowfullscreen frameborder=\"0\" rel=nofollow></iframe></body></html>",frame.size.width,frame.size.height];
[myWeb loadHTMLString:html baseURL:nil];
これがあなたに役立つことを願っています:)
以下は、iOS 6で動作するバージョンで、新しいYouTube埋め込みコードが含まれています。
- (void)embedYouTube:(NSString *)urlString frame:(CGRect)frame {
NSString *html = [NSString stringWithFormat:@"<html><head><style type='text/css'>body {background-color: transparent;color: white;}</style></head><body style='margin:0'><iframe width='%f' height='%f' src='%@' frameborder='0' allowfullscreen></iframe></body></html>", frame.size.width, frame.size.height, urlString];
UIWebView *videoView = [[UIWebView alloc] initWithFrame:frame];
[videoView loadHTMLString:html baseURL:nil];
[self.view addSubview:videoView];
}
スウィフト4
func embedYouTube(_ urlString: String, frame: CGRect) {
let html = "<html><head><style type='text/css'>body {background-color: transparent;color: white;}</style></head><body style='margin:0'><iframe width='\(frame.size.width)' height='\(frame.size.height)' src='\(urlString)' frameborder='0' allowfullscreen></iframe></body></html>"
let videoView = UIWebView(frame: frame)
videoView.loadHTMLString(html, baseURL: nil)
view.addSubview(videoView)
}
MonotouchとC#を使用している場合は、このクラスをプロジェクトに追加して、ビデオを表示するために使用できます。
public class YouTubeViewer : UIWebView
{
public YouTubeViewer(string url, RectangleF frame)
{
string youTubeVideoHTML = @"<object width=""{1}"" height=""{2}""><param name=""movie""
value=""{0}""></param><embed
src=""{0}"" type=""application/x-shockwave-flash""
width=""{1}"" height=""{2}""</embed></object>";
string html = string.Format(youTubeVideoHTML, url, frame.Size.Width, frame.Size.Height);
this.LoadHtmlString(html, null);
this.Frame = frame;
}
}
渡すURLが、[共有]ボタンをクリックしたときにYouTubeから提供された埋め込みコードのURLであることを確認してください。 (そして、古いコードのチェックボックスをチェックしてください)
迅速な実装:
let webView = UIWebView(frame: self.view.frame) // Position your player frame here
self.view.addSubview(webView)
self.view.bringSubviewToFront(webView)
// Playback options: play in-line and start playing immediately
webView.allowsInlineMediaPlayback = true
webView.mediaPlaybackRequiresUserAction = false
// Set the id of the video you want to play
let videoID = "zN-GGeNPQEg" // https://www.youtube.com/watch?v=zN-GGeNPQEg
// Set up your player
let embededHTML = "<html><body style='margin:0px;padding:0px;'><script type='text/javascript' src='http://www.youtube.com/iframe_api'></script><script type='text/javascript'>function onYouTubeIframeAPIReady(){ytplayer=new YT.Player('playerId',{events:{onReady:onPlayerReady}})}function onPlayerReady(a){a.target.playVideo();}</script><iframe id='playerId' type='text/html' width='\(self.view.frame.size.width)' height='\(self.view.frame.size.height)' src='http://www.youtube.com/embed/\(videoID)?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'></body></html>"
// Load the HTML into your UIWebView
webView.loadHTMLString(embededHTML, baseURL: NSBundle.mainBundle().bundleURL)
または、YouTubeは、開発者がUIWebView
をセットアップするiOSでYouTube再生をセットアップするための素晴らしい ヘルパークラス を提供します。