3

来自Apple iOS 文档 #UIGraphicsGetCurrentContext:“在 iOS 4 及更高版本中,您可以从应用程序的任何线程调用此函数。”

另外,为什么方法调用是 C 函数格式 UIGraphicsGetCurrentContext()而不是 Objective-C 消息格式[UIView UIGraphicsGetCurrentContext]

4

1 回答 1

2

iOS 上有一些 API 是通过 C 而不是 ObjC 对象访问的。用于绘图的CoreGraphics(所有CG*功能)是最重要的功能之一。

直接绘图通常是在一个 中完成的CGContextRef,它表示一个图形上下文。UIKit 保留了一堆用于绘制的上下文(通常你不会在当前上下文之外进行太多交互)。全局 C 函数可以访问此堆栈,因为您可以在任何地方使用它们。通常,它们是从 内部访问的drawRect:,但您可以在其他地方使用此堆栈。根据文档

但是,如果您不使用 UIView 对象进行绘图,则必须使用 UIGraphicsPushContext 函数手动将有效上下文推送到堆栈上。

于 2013-04-28T19:33:34.553 回答