正如苹果文档所说,UIGraphicsGetCurrentContext只能在drawRect方法中使用。 如果你想在其他地方使用它,你必须先推送一个上下文。
现在我想使用 UIGraphicsGetCurrentContext 在我自己的名为 render 的方法中获取上下文。 如何获取要推送的上下文?
我可以在 drawRect 中获取上下文并将其保存在非局部变量中吗? 并以另一种方法推送它,然后使用 UIGraphicsGetCurrentContext 来使用它。 如果是这样,为什么我需要插入它并再次获得它?我可以直接使用非局部变量。
最佳答案
您可以调用需要在定时器上重绘的 View 的 setNeedsDisplay
,并让它的 drawRect
调用您的 render
(而不是调用您的直接在定时器上渲染
)。这样您就可以避免对 CG 上下文进行异常操作,并在矩形滚出屏幕时阻止渲染。
编辑: 当您希望特定上下文成为 UI Kit 操作的上下文时,您可以使用 UIGraphicsPushContext 和 UIGraphicsPopContext。我最初对他们所做的事情的理解是不正确的(我自己对 iOS 开发还比较陌生)。例如,有些操作(例如,一些设置颜色或其他绘图参数的操作)隐式操作当前上下文。如果您为在位图上绘制等设置上下文,然后您想要使用修改当前上下文状态的操作(即修改上下文参数的操作,但不将特定上下文引用作为一个参数),你推送位图上下文使其成为当前位图上下文,执行隐式引用它的操作,然后立即弹出上下文。
特别感谢 rob mayoff 向我解释了这一点。
关于iphone - 如何获取 UIGraphicsPushContext 参数的上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8464573/