无法为 UIWebView 设置缩略图



我想在我的视图上的 uiwebview 框架中设置缩略图。但是,当我使用以下代码时,尽管图像值不为 NULL,但没有显示图像。有人可以帮忙,让我知道我哪里出错了?

请注意,在代码中,VideoView 类派生自 UIWebView,其工作原理与它类似。

        video = [[VideoView alloc] 
                              initWithStringAsURL:@"http://www.youtube.com/watch?v=T6X3j7zxUHA" 
                              frame:CGRectMake(11, 7, 298, 311)];
    [self addSubview:video];
    UIGraphicsBeginImageContext(video.bounds.size); 
    [video.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *resultImageView = UIGraphicsGetImageFromCurrentImageContext();
    thumbnailButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [thumbnailButton setFrame:CGRectMake(0,0, 298, 311)];
    [thumbnailButton setImage:resultImageView forState:UIControlStateNormal];
    [video addSubview:thumbnailButton];
     UIGraphicsEndImageContext();    

我不建议使用UIWebView来获取YouTube视频的缩略图,但这里有一些代码,我用它来在我的应用程序中嵌入YouTube视频。

static NSString* EmbedHTML = "<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=%0.0f"/>
</head>
<iframe width="%0.0f" height="%0.0f" src="%@" frameborder="0" allowfullscreen>   </iframe></html>";

使用它来嵌入视频并将您的 youtube 网址从 http://www.youtube.com/watch?v=T6X3j7zxUHA 更改为 http://www.youtube.com/embed/T6X3j7zxUHA .

另一种不需要 Web 视图的方法是手动构建缩略图。(下面的示例)

  ///////////////////////////////////////////////////////////////////////////////////////////////////
-(NSString*)youtubeThumb:(NSString*)url
{
    NSRange end = [url rangeOfString:@"?"];
    if(end.location != NSNotFound)
    {
        NSRange start = [url rangeOfString:@"/" options:NSBackwardsSearch range:NSMakeRange(0, end.location)];
        if(start.location != NSNotFound)
        {
            NSString* video_id = [url substringWithRange:NSMakeRange(start.location+1, (end.location-1)-start.location)];
            return [NSString stringWithFormat:@"http://i.ytimg.com/vi/%@/2.jpg",video_id];
        }
    }
    return nil;
}

现在您有了图像缩略图 URL,只需获取它(通过一个简单的GET请求)。

最新更新