2011-09-23 21 views
5

Tôi đang cố gắng hiểu Quartz và nhận được bối cảnh bạn phải vẽ. Nếu tôi có một chức năng mà tôi tạo ra một bối cảnh, nhưng sau đó tôi gọi một chức năng khác cho một số bản vẽ khác đến cùng một ngữ cảnh, tôi có cần phải chuyển ngữ cảnh từ phương thức đầu tiên sang ngữ cảnh tiếp theo không? Hoặc tôi có thể chỉ cần sử dụng UIGraphicsGetCurrentContext() cho bất kỳ phương pháp CG mà yêu cầu một bối cảnh kể từ khi tôi vẫn còn vẽ vào bối cảnh tương tự?Hiểu UIGraphicsGetCurrentContext()

Trả lời

13

Các docs for UIGraphicsGetCurrentContext() nói:

Bối cảnh đồ họa hiện nay là con số không theo mặc định. Trước khi gọi phương thức drawRect: của nó, xem các đối tượng đẩy một ngữ cảnh hợp lệ vào ngăn xếp, làm cho nó hiện tại. Nếu bạn không sử dụng đối tượng UIView để vẽ , tuy nhiên, bạn phải đẩy ngữ cảnh hợp lệ vào ngăn xếp theo cách thủ công bằng hàm UIGraphicsPushContext.

Vì vậy, sau khi gọi UIGraphicsPushContext() với ngữ cảnh bạn đã tạo, các phương pháp khác của bạn có thể truy cập ngữ cảnh đó bằng UIGraphicsGetCurrentContext(). Nếu bạn đang gọi UIGraphicsGetCurrentContext() bên ngoài drawRect: và chưa đặt bối cảnh rõ ràng với UIGraphicsPushContext(), ngữ cảnh đồ họa hiện tại là không xác định — và chắc chắn không an toàn để sử dụng.

+0

đây là liên kết hoạt động: https://developer.apple.com/documentation/uikit/1623918-uigraphicsgetcurrentcontext – DeveloperACE