2011-07-29 9 views
5

Así que aquí es mi entendimiento: hay una setNeedsDisplay tanto en la clase UIView y CALayer, UIView es una clase de compuesto que incluye una CALayer. Pero UIView utiliza drawRect: mientras CALayer utiliza drawLayer:inContext: Ambos utilizan setNeedsDisplay llamarlo. ¿Es esto algún protocolo o algo? Así que supongo que en algún momento de la implementación de UIView, se crea un CALayer y el delegado de esta capa se establece en la clase UIView. ¿Cuál es exactamente la relación entre estas dos clases? ¿Entonces el drawRect: en UIView básicamente está analizando su contenido y llama al drawLayer:inContext: de su capa? ¿Qué tipo de patrón de diseño es este? Estoy tratando de entender cómo funcionan estas dos clases, gracias.¿Cuál es la relación entre UIView y CALayer

Respuesta

0

Esto es todo detalle de implementación de Apple, así que no sé a ciencia cierta. Además, diferentes clases de vista tendrán diferentes relaciones con su capa.

Por ejemplo, UIImageView es explicitly documented a no llamada drawRect:. Esto se debe probablemente a que la configuración de una imagen realmente actualiza la propiedad de la capa contents directamente sin pasar por los métodos de representación.

Dicho esto, me imagino que el comportamiento más básico de UIView es que setNeedsDisplay simplemente reenvía la llamada a la capa. Entonces, cuando el drawLayer:inContext: se llama en la vista, en ella se establece la materia UIGraphics contexto y llama drawRect:.

Cuestiones relacionadas