iOS:在上下文中多次绘制图像

时间:2014-08-20 09:23:03

标签: ios graphics core-graphics

我有一些图像,我希望在我的UIControl中绘制它。但是为了提高性能,我需要在图形上下文中绘制。

现在我可以使用类似的东西:

var imageRect1 = CGRectMake(0, 0, width, height)
var imageRect2 = CGRectMake(x2, y2, width, height)
...
CGContextDrawImage(ctx, imageRect1, image)
CGContextDrawImage(ctx, imageRect2, image)
...

但是这个解决方案意味着每次调用该上下文函数时我们至少会读取image。 我搜索一些可以用于某些步骤的解决方案,比如下一个(如果我错了,请随时纠正我):

//read image into some bitmap or maybe some byte array
//paste it several times in different places (several times means ~500 times)

也许我必须逐像素复制?有人可以给我一些如何快速做的建议吗?

1 个答案:

答案 0 :(得分:0)

如果您要在CALayer中绘制单个图像,则最常见的解决方案是将图像设置为支持CALayer 的内容属性,如{ {3}}

self.imageLayer.contents = (id)image.CGImage

如果,您的问题是使用CGImageRefCGContextRef进行缓存,则您的问题已在此处得到解答:

Technical Q&A QA1708

如果您直接在UIView中绘图,请参阅@boeqqsh评论:

let image = UIImage.imageNamed("image")
let imageRect1 = CGRectMake(0, 0, width, height)
let imageRect2 = CGRectMake(x2, y2, width, height)

image.drawInRect(imageRect1)
image.drawInRect(imageRect2)