2011-09-05 14 views
19

iOSアプリでyoutubeのサムネイル画像を表示しています。クリックするとyoutubeに行きます。iOSの別の画像に画像を重ねる

これらの画像に再生ボタンを重ねる方法が必要です。そうする最も簡単な方法は何でしょうか?

はまた、画像は遠隔地の表にロードされているので、あなたがテーブルのスクロールパフォーマンスに懸念がある場合のパフォーマンスは、サムネイルを取得し、それ以上の再生ボタンをペイントし、

+0

?それを試しましたか?私はあなたと同じことをしようとしていますあなたの解決策に興味があります.. – user739711

答えて

61

大きな考慮事項です。

+(UIImage*) drawImage:(UIImage*) fgImage 
       inImage:(UIImage*) bgImage 
       atPoint:(CGPoint) point 
{ 
    UIGraphicsBeginImageContextWithOptions(bgImage.size, FALSE, 0.0); 
    [bgImage drawInRect:CGRectMake(0, 0, bgImage.size.width, bgImage.size.height)]; 
    [fgImage drawInRect:CGRectMake(point.x, point.y, fgImage.size.width, fgImage.size.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 
+0

感謝@ジャノ!これを試してみる。私は実際には、画像上のペインティングが効率的であることに驚いています。 –

+2

@Janoこれは動作しますが、PNGの透明度は失われます。 –

+0

コンテキストが作成されたときに使用される0.0に注意してください。 0.0を使用すると、サイズはメインスクリーンのスケールに依存します。誰かが別の画像の上に1つの画像を置いておきたい場合は、 –

3

ここに私がしたことがあります。 cameraImgはカメラから取得した画像で、他の3つの画像はcameraImgに表示された静止画像です。この場合、sizeは、開始するコンテキストのサイズを定義します。イメージは、DrawInRectメソッドで定義された矩形で描画されます。コンテキストを終了すると、完了していることを確認してください。

UIImage *cameraImg = image; 

UIImage *leftImg = [UIImage imageNamed:@"apple.jpeg"]; 

UIImage *rightImg = [UIImage imageNamed:@"Cloud.png"]; 

UIImage *middleImg = [UIImage imageNamed:@"mario.jpeg"]; 

CGSize size = CGSizeMake(cameraImg.size.width, cameraImg.size.height); 

UIGraphicsBeginImageContext(size); 

[cameraImg drawInRect:CGRectMake(0, 0, self.view.window.frame.size.width, self.view.window.frame.size.height)]; 

[leftImg drawInRect:CGRectMake(x, y, width, height)]; 

[rightImg drawInRect:CGRectMake(x, y, width, height)]; 

[middleImg drawInRect:CGRectMake(x, y, width, height)]; 

UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0,finalImage.size.width, finalImage.size.height)]; 

imageView.image = finalImage; 

[self.view addSubview:imageView]; 
5

スウィフト2.2バージョン我々は、サムネイル-ImageViewの上に私たちのオーバーレイ画像を置けば

static func drawImage(image foreGroundImage:UIImage, inImage backgroundImage:UIImage, atPoint point:CGPoint) -> UIImage{ 
    UIGraphicsBeginImageContextWithOptions(backgroundImage.size, false, 0.0) 
    backgroundImage.drawInRect(CGRectMake(0, 0, backgroundImage.size.width, backgroundImage.size.height)) 
    foreGroundImage .drawInRect(CGRectMake(point.x, point.y, foreGroundImage.size.width, foreGroundImage.size.height)) 
    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return newImage 
    } 
2

スウィフト3.xの

func drawImage(image foreGroundImage:UIImage, inImage backgroundImage:UIImage, atPoint point:CGPoint) -> UIImage { 
    UIGraphicsBeginImageContextWithOptions(backgroundImage.size, false, 0.0) 
    backgroundImage.draw(in: CGRect.init(x: 0, y: 0, width: backgroundImage.size.width, height: backgroundImage.size.height)) 
    foreGroundImage.draw(in: CGRect.init(x: point.x, y: point.y, width: foreGroundImage.size.width, height: foreGroundImage.size.height)) 
    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return newImage! 
} 
関連する問題