iphone - 如何获取 UIGraphicsPushContext 参数的上下文?

标签 iphone objective-c ios cocoa

正如苹果文档所说,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/

相关文章:

ios - 为什么这段代码有效?

iphone - UICollectionView 与 iOS 7 一起使用吗?边距空间

ios - 标识符为 'com.example.app.extention' 的 App ID 不可用。请输入不同的字符串

iphone - 如何覆盖选项卡栏的更多 Controller ?

iphone - 固定 UITableView 的高度

ios - 如何将粘性搜索栏添加到 UITableViewController

objective-c - 如何使用 CodeRunner 程序输入字段?

ios - UIViewController 未释放

ios - 无需迭代即可获取 fetchedObjects 中的特定对象

javascript - 如何让 jQuery slider 敏感才能在 iPhone 上正常工作?