Solusi termudah adalah menggunakan animasi tersirat. Ini akan menangani semua masalah itu untuk Anda:
self.layer?.backgroundColor = NSColor.red.cgColor;
Jika Anda ingin menyesuaikan misalnya durasinya, Anda dapat menggunakan NSAnimationContext
:
NSAnimationContext.beginGrouping();
NSAnimationContext.current.duration = 0.5;
self.layer?.backgroundColor = NSColor.red.cgColor;
NSAnimationContext.endGrouping();
Catatan: Ini hanya diuji pada MacOS.
Awalnya saya tidak melihat animasi apa pun ketika melakukan ini. Masalahnya adalah bahwa lapisan lapisan yang didukung tampilan tidak tersirat bernyawa. Untuk mengatasi ini, pastikan Anda menambahkan layer sendiri (sebelum mengatur tampilan ke layer-didukung).
Contoh cara melakukan ini adalah:
override func awakeFromNib() {
self.layer = CALayer();
//self.wantsLayer = true;
}
Menggunakan self.wantsLayer
tidak membuat perbedaan dalam pengujian saya, tetapi bisa memiliki beberapa efek samping yang saya tidak tahu.
.presentation()
untuk mendapatkan nilai "akhir, terlihat". Cari ke bawah untuk jawaban yang benar di bawah ini yang menjelaskan hal itu dilakukan dengan lapisan presentasi.