From Apple iOS Documentation #UIGraphicsGetCurrentContext:「在iOS 4及更高版本中,您可以從您的應用程序的任何線程調用此函數。」爲什麼UIGraphicsGetCurrentContext()全局可用?
此外,爲什麼該方法調用C函數格式 UIGraphicsGetCurrentContext()
而不是Objective-C消息格式[UIView UIGraphicsGetCurrentContext]
?
From Apple iOS Documentation #UIGraphicsGetCurrentContext:「在iOS 4及更高版本中,您可以從您的應用程序的任何線程調用此函數。」爲什麼UIGraphicsGetCurrentContext()全局可用?
此外,爲什麼該方法調用C函數格式 UIGraphicsGetCurrentContext()
而不是Objective-C消息格式[UIView UIGraphicsGetCurrentContext]
?
iOS上有一些API可以通過C而不是ObjC對象訪問。用於繪製的CoreGraphics(所有CG*
函數)是最重要的函數之一。
直接繪製通常在代表圖形上下文的CGContextRef
中完成。 UIKit爲繪圖保留了一堆上下文(通常你不會在當前上下文之外進行更多的交互)。這個堆棧被全局C函數訪問,因爲你可以在任何地方使用它們。通常,它們是從drawRect:
的內部訪問的,但是您可以在其他地方使用此堆棧。 Per the docs:
如果你不使用一個UIView對象做你的圖紙,但是,你必須 使用 UIGraphicsPushContext功能手動推一個有效的上下文壓入堆棧。