【问题标题】:Why is UIGraphicsGetCurrentContext() available globally?为什么 UIGraphicsGetCurrentContext() 全局可用?
【发布时间】:2013-04-28 02:21:57
【问题描述】:

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

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

【问题讨论】:

    标签: ios objective-c c uikit uigraphicscontext


    【解决方案1】:

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

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

    但是,如果您没有使用 UIView 对象进行绘图,您 必须使用 UIGraphicsPushContext 函数。

    【讨论】:

    • 你能完成下面的句子:“你需要一个图形上下文,当......”是我需要画一条线,从一个点移动到另一个点的时候吗?描边和填充吗?还有什么?
    猜你喜欢
    • 2021-01-19
    • 2012-08-10
    • 2022-12-08
    • 2017-08-17
    • 2015-07-21
    • 2015-11-20
    • 2013-02-07
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多