【发布时间】:2016-12-29 14:06:54
【问题描述】:
我可以成功创建并使用 Core Graphics 位图上下文进行背景绘制,如下所示:
- 调用
UIGraphicsBeginImageContextWithOptions()创建新位图并使其成为当前上下文 - 使用 CG API 绘制一些内容
- 定期告诉我的视图在
drawRect()和setNeedsDisplay()之外调用UIGraphicsGetImageFromCurrentImageContext(),然后在drawRect()内部将图像绘制到视图中 - 最后调用
UIGraphicsEndImageContext()整理位图,将其从栈顶移除。
一切都很好,而且工作正常,但是有什么方法可以管理堆栈上的这种图形上下文吗? 不得不依赖它在整个过程中保持当前上下文似乎有点奇怪整个过程……我的意思是,如果你的应用需要定期在两个不同的位图上显示更新,每个位图都有自己的上下文,你会怎么做?
起初我以为我可以只使用UIGraphicsPushContext() 和UIGraphicsPopContext(),但这会停止位图上下文的工作,而且UIKit Functions Reference 确实说你不应该这样做:
[...] 绘图环境立即被推送到图形上下文堆栈中。
虽然此函数创建的上下文是当前上下文,但您可以调用 UIGraphicsGetImageFromCurrentImageContext 函数来根据上下文的当前内容检索图像对象。修改完上下文后,必须调用 UIGraphicsEndImageContext 函数来清理位图绘制环境,并从上下文堆栈的顶部移除图形上下文。 您不应使用 UIGraphicsPopContext 函数从堆栈中删除此类上下文。
在大多数其他方面,此函数创建的图形上下文的行为类似于任何其他图形上下文。您可以通过推送和弹出其他图形上下文来更改上下文。您还可以使用 UIGraphicsGetCurrentContext 函数获取位图上下文。
有什么想法...?这不是问题,但我想知道我是否在这里遗漏了什么......
【问题讨论】:
-
也许解决这个问题的方法是使用 Core Graphics 调用构建图像(我还不明白该怎么做)
标签: ios bitmap core-graphics uigraphicscontext