it-swarm.com.de

Einbetten von YouTube-Videos auf

Ich habe ein Video von YouTube über ein im Internet gefundenes Snippet eingebettet. Hier ist der Code, den ich verwendet habe:

    @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

Es kompiliert korrekt und wenn ich es öffne, sehe ich ein falsches weißes Kästchen, das der Code erstellt hat. Ich habe zwei Fragen dazu:

  1. Woher weiß ich, ob das Video abgespielt wird? Es handelt sich lediglich um ein einfaches weißes Kästchen. Gibt der Simulator Videos von YouTube wieder?

  2. Wie kann ich diese Box positionieren?

28
ayve

Ich habe gerade Ihren Code getestet. Er funktioniert problemlos auf einem iPhone. Youtube-Videos werden jedoch vom iOS-Simulator nicht unterstützt. Daher benötigen Sie ein echtes Gerät zum Testen.

Wie kann ich diese Box positionieren?

Sie übergeben bereits X (20), Y (20), Breite (100) und Höhe (100) der Box in dieser Zeile:

[self embedYouTube:@"http://..." frame:CGRectMake(20, 20, 100, 100)];

Um die Position der Ansicht anschließend zu ändern, ändern Sie ihre Center-Eigenschaft:

videoView.center = CGPointMake(200, 100 );
13
Julio Gorgé

Hier ist der Beispielcode, der unter iOS 5 einwandfrei funktioniert. Dies ist die neue Implementierung, die von der Youtube-API bereitgestellt wurde. myWeb ist hier eine UIWebView. showinfo=0 in URL entfernt den oberen Header in der Videoansicht.

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];

Hoffe das hilft dir :)

7
Nikesh K

Hier ist eine Version, die unter iOS 6 und mit dem neuen YouTube-Einbettungscode funktioniert:

- (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];
}
5
adriandz

Schnell 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)
}
0
Quiet Islet

Für diejenigen, die Monotouch und C # verwenden, können Sie diese Klasse zu Ihrem Projekt hinzufügen und zum Anzeigen Ihrer Videos verwenden:

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;
    }
}

Stellen Sie sicher, dass die URL, die Sie übergeben, die URL aus dem von Youtube bereitgestellten Einbettungscode ist, wenn Sie auf die Schaltfläche "Teilen" klicken. (Und kreuzen Sie das Kästchen für den alten Code an)

0
TChadwick

Schnelle Implementierung:

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)

Alternativ bietet YouTube eine hervorragende Helper-Klasse für Entwickler an, um die YouTube-Wiedergabe in ihrem iOS einzurichten, wodurch die UIWebView für Sie eingerichtet wird.

0
JAL