2010-12-16 38 views

Trả lời

111

Chúng hoàn toàn khác và không tương thích.

Để được hoàn toàn rõ ràng:

nó là hoàn toàn là một sự trùng hợp rằng từ "lớp" được sử dụng trong cả hai tên; chúng là hoàn toàn không có liên quan.

CGLayers là một "đặc biệt" "hiệu suất cao" thingy.

Bạn có thể xem chúng "như bitmap, nhưng tốt hơn".

Apple ngồi xuống và nói "Chúng tôi bị bệnh của những người sử dụng bitmap, chúng ta hãy làm một cái gì đó tốt hơn!" :-)

Thật vậy, bạn chỉ làm việc với CGLayers offscreen.

Để lặp lại, CGLayers được sử dụng hoàn toàn ngoài màn hình.

Khi đã sẵn sàng, sau đó bạn có thể đưa chúng lên màn hình thực của bạn (có nghĩa là: thổi chúng vào một trong các chế độ xem của bạn).

(Tuy nhiên: lưu ý rằng: CGLayers thường được sử dụng Khi tôi nói chúng được sử dụng "một mình," Ý tôi là chúng được sử dụng cho "một mình".:. Xử lý hình ảnh hoặc tính toán toán học Trong trường hợp đó, CGLayers không bao giờ nhìn thấy trên màn hình và họ hoàn toàn không có kết nối với thế giới trên màn hình.)

Ngược lại ... CALayers đơn giản là những thứ "trong" chế độ xem. CALayer chỉ là cách làm việc của views.

Vì vậy, hai khái niệm hoàn toàn khác nhau.

CALayers chỉ là những thứ "trong" chế độ xem. Ngược lại, CGLayers là "máy tính, hiệu suất cao, máy tính tính toán" của Apple.

Để rõ ràng, CGLayers hoàn toàn không có kết nối với chế độ xem và không liên kết với chế độ xem. (Chắc chắn, bạn có thể dán một CGLayer vào một khung nhìn, nhưng sau đó, bạn có thể dán "typography" hoặc "một hình ảnh" vào một khung nhìn. Typography và hình ảnh không phải là khung nhìn, và CGLayers không phải là khung nhìn.)

Ví dụ điển hình là:

bạn muốn vẽ một thứ gì đó phức tạp một lần rồi vẽ thứ đó nhiều lần trên màn hình. Câu trả lời cho vấn đề đó chính xác là CGLayers. "Khu vực làm việc" của bạn sẽ là một CGLayer; sau đó bạn có thể ghi nó vào máy in, trên màn hình hoặc bất kỳ thứ gì.

Để rõ ràng, theo ý kiến ​​của tôi, Apple nên chọn một tên khác ...

một tên tốt sẽ là "CGCalculationSpace".

Thực tế là tên chứa từ "lớp", khiến bạn nghĩ về NSLayers.

Để lặp lại: hoàn toàn không có mối quan hệ nào, dù bằng bất kỳ cách nào. CGLayers thậm chí không mơ hồ liên quan đến lớp.

Hoàn toàn không có kết nối. Nó thực sự khó hiểu rằng các chữ "l a y e r" được sử dụng trong tên - đó là một sự xấu hổ !!

CGLayers nên được gọi là "không gian làm việc" hoặc "mô hình tính toán" hoặc một cái gì đó tương tự.

Hy vọng nó sẽ giúp và hy vọng bạn vẫn đang đọc!

+2

Cảm ơn rất nhiều! Tôi đọc nó hoàn toàn. Đó là mô tả hay và rất hữu ích. Đặc biệt là về CGLayer vs CALayer = 'thành phần ngoài màn hình' so với 'thành phần sống' và 'không tương thích'. Tôi có một ý tưởng với mô tả của bạn; CALayer là một mô hình trừu tượng, OO của CGLayer. (Đồ thị cảnh?) Dù sao, cảm ơn một lần nữa! – Eonil

+2

Tôi đọc lại câu trả lời của bạn và tôi nhận ra mình đã hiểu nhầm. CGLayer không liên quan gì đến CALayer. CGLayer là một phần của cơ sở vẽ, và CALayer là một phần của compositor. – Eonil

+2

OMG, đây là một câu trả lời tuyệt vời. Cảm ơn bạn rất nhiều vì đã dành thời gian để phân biệt hai điều rất tuyệt vời! Nó giải quyết một vài nghi ngờ của tôi. ++ điểm cho "hy vọng bạn vẫn đang đọc"! : D – codeBearer

Các vấn đề liên quan