在iOS中嵌入Youtube视频

时间:2011-05-07 18:52:33

标签: cocoa-touch ios uiwebview uiviewcontroller youtube

  

可能重复:
  Embedding YouTube videos on iOS

我正在尝试在iOS上嵌入youtube视频,以便当用户点击按钮时,显示YouTube视频而不会放弃应用,视频完成后,用户将返回到应用。我在网上找到了一个如何做到这一点的教程,我跟着它。我创建了一个YouTubeView:

#import "YouTubeView.h"


@implementation YouTubeView

- (YouTubeView *)initWithStringAsURL:(NSString *)urlString frame:(CGRect)frame {
    self = [super init];
    if (self) 
    {
        // Create webview with requested frame size
        self = [[UIWebView alloc] initWithFrame:frame];

        // HTML to embed YouTube video
        NSString *youTubeVideoHTML = @"<html><head>\
        <body style=\"margin:0\">\
        <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \
        width=\"%0.0f\" height=\"%0.0f\"></embed>\
        </body></html>";

        // Populate HTML with the URL and requested frame size
        NSString *html = [NSString stringWithFormat:youTubeVideoHTML, urlString, frame.size.width, frame.size.height];

        // Load the html into the webview
        [self loadHTMLString:html baseURL:nil];
    }
    return self;  
}

#pragma mark -
#pragma mark Cleanup

- (void)dealloc 
{
    [super dealloc];
}

@end

我正在实例化它:(案例2)

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    SongInfoTableVC *infoVC;
    YouTubeView *youTubeView;
    switch (buttonIndex) {
        case 0:
            NSLog(@"hello");
            [self setLyrics];
            break;
        case 1:
            infoVC = [[SongInfoTableVC alloc] initWithStyle:UITableViewStyleGrouped];
            [infoVC setBook:data];
            [infoVC setTitle:@"Song Info"];
            [[self navigationController] pushViewController:infoVC animated:YES];
            [infoVC release];
            break;
        case 2:
            youTubeView = [[YouTubeView alloc] 
                                        initWithStringAsURL:@"http://www.youtube.com/watch?v=xli2E2i8GZ4" 
                                        frame:CGRectMake(0, 0, 320, 480)];

            [[[self navigationController] view] addSubview:youTubeView];
            break;
        default:
            break;
    }
}

但这会打开一个空白的白色屏幕。我究竟做错了什么? 这是截图: enter image description here

由于

1 个答案:

答案 0 :(得分:4)

尝试在设备上进行测试。我不认为模拟器支持这种方法。

见这里:Embedding YouTube videos on