2011-07-29 13 views
5

arasındaki ilişki nedir? İşte benim anlayışım şu: hem UIView hem de CALayer sınıfında setNeedsDisplay var, UIView bir CALayer içeren bir bileşik sınıftır. Ancak UIView, drawRect:'u kullanır; CALayer ise drawLayer:inContext: kullanır. Her ikisi de setNeedsDisplay'u kullanır. Bu bir protokol veya bir şey mi? Bu yüzden, UIView'in uygulanmasında bir noktada, bir CALayer yaratıldı ve bu katmandaki temsilci UIView sınıfına mı kuruldu? Tam olarak bu iki sınıf arasındaki ilişki nedir? Yani UIView'deki drawRect:, temel olarak içeriğinin ayrıştırılması ve katmanının drawLayer:inContext:'unu çağırıyor mu? Bu ne biçim bir desen? Kafamı bu iki sınıfın nasıl çalıştığına sarmaya çalışıyorum, teşekkürler.UIView ve CALayer

cevap

0

Bu, Apple'ın uygulama detaylarının tamamıdır, bu yüzden emin değilim. Ayrıca, farklı görüş sınıfları katmanları ile farklı ilişkilere sahip olacaktır. Örneğin

, UIImageViewexplicitly documented değilçağrısı drawRect: olduğunu. Bunun nedeni muhtemelen bir görüntüyü ayarlamak, katman oluşturma yöntemlerini kullanmadan doğrudan katmanın contents özelliğini günceller.

En temel UIView davranışının, setNeedsDisplay davranışının yalnızca katmana çağrıyı iletmesi olduğunu tahmin ettim. Ardından, görünümde drawLayer:inContext: çağrıldığında, UIGraphics içerik öğelerini ayarlar ve drawRect:'u çağırır.