La solución más fácil es usar animaciones implícitas. Esto manejará todos esos problemas para ti:
self.layer?.backgroundColor = NSColor.red.cgColor;
Si desea personalizar, por ejemplo, la duración, puede usar NSAnimationContext
:
NSAnimationContext.beginGrouping();
NSAnimationContext.current.duration = 0.5;
self.layer?.backgroundColor = NSColor.red.cgColor;
NSAnimationContext.endGrouping();
Nota: Esto solo se prueba en macOS.
Inicialmente no vi ninguna animación al hacer esto. El problema es que la capa de una capa respaldada por la vista no se anima de forma implícita. Para resolver esto, asegúrese de agregar una capa usted mismo (antes de configurar la vista con respaldo de capa).
Un ejemplo de cómo hacer esto sería:
override func awakeFromNib() {
self.layer = CALayer();
//self.wantsLayer = true;
}
El uso self.wantsLayer
no hizo ninguna diferencia en mis pruebas, pero podría tener algunos efectos secundarios que desconozco.
.presentation()
para obtener el valor "final, visto". Busque las respuestas correctas a continuación que explican que se hace con la capa de presentación.