来自Apple iOS 文档 #UIGraphicsGetCurrentContext:“在 iOS 4 及更高版本中,您可以从应用程序的任何线程调用此函数。”
另外,为什么方法调用是 C 函数格式
UIGraphicsGetCurrentContext()
而不是 Objective-C 消息格式[UIView UIGraphicsGetCurrentContext]
?
来自Apple iOS 文档 #UIGraphicsGetCurrentContext:“在 iOS 4 及更高版本中,您可以从应用程序的任何线程调用此函数。”
另外,为什么方法调用是 C 函数格式
UIGraphicsGetCurrentContext()
而不是 Objective-C 消息格式[UIView UIGraphicsGetCurrentContext]
?
iOS 上有一些 API 是通过 C 而不是 ObjC 对象访问的。用于绘图的CoreGraphics(所有CG*
功能)是最重要的功能之一。
直接绘图通常是在一个 中完成的CGContextRef
,它表示一个图形上下文。UIKit 保留了一堆用于绘制的上下文(通常你不会在当前上下文之外进行太多交互)。全局 C 函数可以访问此堆栈,因为您可以在任何地方使用它们。通常,它们是从 内部访问的drawRect:
,但您可以在其他地方使用此堆栈。根据文档:
但是,如果您不使用 UIView 对象进行绘图,则必须使用 UIGraphicsPushContext 函数手动将有效上下文推送到堆栈上。