0

ビューの uiwebview フレームにサムネイル画像を設定したい。ただし、次のコードを使用すると、画像の値は NULL ではありませんが、画像は表示されません。誰かが助けて、どこが間違っているのか教えてもらえますか?

コードでは、VideoView クラスは UIWebView から派生しており、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();    
4

1 に答える 1

-1

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 URL を からhttp://www.youtube.com/watch?v=T6X3j7zxUHAに変更しますhttp://www.youtube.com/embed/T6X3j7zxUHA

WebView を必要としないこれを取得する別の方法は、手動でサムネイルを作成することです。(下の例)

  ///////////////////////////////////////////////////////////////////////////////////////////////////
-(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リクエストを使用)。

于 2012-04-27T15:59:08.467 に答える