iphone - ¿Cuáles son las diferencias entre un UIView y un CALayer?
ios ipad (5)
Del blog Ray Wenderlich ( Tutorial )
CALayers son simplemente clases que representan un rectángulo en la pantalla con contenido visual. "Pero espere un momento", puede decir, "¡para eso son los UIViews!". Es cierto, pero hay un truco para eso: ¡cada UIView contiene una capa de raíz que atrae!
Ambos tienen la mayoría de los mismos atributos, ambos admiten diferentes tipos de animaciones, ambos representan datos diferentes. ¿Cuáles son las diferencias entre un UIView y un CALayer?
En iOS, cada UIView está respaldado por un CALayer Core Animation, por lo que se trata de CALayers cuando se usa un UIView, aunque es posible que no se dé cuenta. A diferencia de las NSViews en Mac, que evolucionaron antes de que existiera Core Animation, las UIViews pretenden ser envoltorios livianos alrededor de estos CALayers.
Como describo en la pregunta similar "¿Cuándo usar CALayer en Mac / iPhone?" Trabajar directamente con CALayers no le ofrece ventajas de rendimiento significativas sobre UIViews. Una de las razones por las que puede querer construir un elemento de interfaz de usuario con CALayers en lugar de UIViews es que se puede portar muy fácilmente a la Mac. Los UIView son muy diferentes de NSViews, pero los CALayers son casi idénticos en las dos plataformas. Esta es la razón por la cual el marco de Trazado principal presenta sus gráficos utilizando CALayers en lugar de otros elementos de la IU.
Una cosa que UIViews proporciona sobre CALayers es el soporte integrado para la interacción del usuario. Se encargan de las pruebas de golpe en toques y otras acciones relacionadas que necesitaría construir usted mismo si administra una jerarquía de CALayers. No es tan difícil implementarlo usted mismo, pero es un código adicional que necesitaría escribir al construir una interfaz solo de CALayer.
A menudo necesitará acceder a las capas subyacentes de un UIView cuando realice animaciones más complejas de lo que permite la clase base UIView. Las capacidades de animación de UIView han crecido a medida que el SDK de iOS ha madurado, pero todavía hay algunas cosas que se hacen mejor interactuando con el CALayer subyacente.
La gran diferencia es que UIView está diseñado para CocoaTouch en dispositivos móviles. Agrega algún controlador de eventos que CALayer no proporcionó.
Simplemente hablando, UIView hereda de UIResponder, maneja los eventos de los usuarios, contiene CALayer, que hereda de NSObject, se enfoca principalmente en renderizado, animación, etc.
UIView
es un contenedor para CALayers
. Usando UIKit
.
CALayer
donde dibujamos los contenidos. Usando CoreGraphics
Si trabaja con funciones de control personalizado, sería genial seguir adelante con la vista única que contiene más capas para una representación nativa precisa. Dado que los UIView
no UIView
que UIView
.
Para crear un esqueleto común para Mac e iOS, siga el diseño de su aplicación usando CALayers
. Dado que está disponible en ambas plataformas.
UIView
tiene características como eventos táctiles logrados mediante delegados -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
, tochesStart
como eventos y otras características de UIKit
.
Para trabajar con CALayers
use el conocimiento de Core Graphics. Para cualquier vista simple de visualización, UIView
es suficiente.