在iOS中的另一个图像覆盖图像

我在iOS应用程序中显示来自YouTube的缩略图图像。 点击后,将转到youtube。

我需要将播放button叠加到这些图像上。 什么可能是最直接的方式呢?

另外,图像被远程加载到桌子上,所以性能是一个很大的考虑因素

如果您关心表格滚动性能,请检索缩略图并在其上绘制播放button。

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

Swift 2.2版本

  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 } 

这是我做的。 cameraImg是我从相机获得的图像,其他三个图像是我在cameraImg上显示的静态图像。 在这种情况下,大小定义了我们要开始的上下文的大小。 图像绘制在由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]; 

Swift 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! }