it-swarm-id.com

Apa perbedaan antara UIView dan CALayer?

Keduanya memiliki sebagian besar atribut yang sama, keduanya mendukung berbagai jenis animasi, keduanya mewakili data yang berbeda.

95
Oleg Danu

Di iOS, setiap UIView didukung oleh Core Animation CALayer, jadi Anda berhadapan dengan CALayers saat menggunakan UIView, meskipun Anda mungkin tidak menyadarinya. Tidak seperti NSViews di Mac, yang berkembang sebelum Core Animation ada, UIViews dimaksudkan untuk menjadi pembungkus ringan di sekitar CALayers ini.

Seperti yang saya jelaskan dalam pertanyaan serupa "Kapan menggunakan CALayer di Mac/iPhone?" , bekerja langsung dengan CALayers tidak memberi Anda keuntungan kinerja yang signifikan dibandingkan UIViews. Salah satu alasan Anda mungkin ingin membangun elemen antarmuka pengguna dengan CALayers dan bukan UIViews adalah bahwa hal itu dapat dengan mudah diangkut ke Mac. UIViews sangat berbeda dari NSViews, tetapi CALayers hampir identik pada kedua platform. Inilah mengapa kerangka Core Plot menjabarkan grafiknya menggunakan CALayers dan bukan elemen UI lainnya.

Satu hal yang disediakan UIViews atas CALayers adalah dukungan bawaan untuk interaksi pengguna. Mereka menangani uji coba pada sentuhan dan tindakan terkait lainnya yang perlu Anda bangun sendiri jika mengelola hierarki CALayers. Ini tidak terlalu sulit untuk diterapkan sendiri, tetapi ini adalah kode tambahan yang harus Anda tulis ketika membangun antarmuka CALayer saja.

Anda akan sering perlu mengakses lapisan yang mendasari untuk UIView saat melakukan animasi yang lebih kompleks daripada yang diizinkan kelas UIView. Kemampuan animasi UIView telah berkembang seiring iOS SDK telah matang, tetapi masih ada beberapa hal yang paling baik dilakukan dengan berinteraksi dengan CALayer yang mendasarinya.

211
Brad Larson

Dari blog Ray Wenderlich ( Tutorial )

CALayers hanyalah kelas yang mewakili persegi panjang di layar dengan konten visual. "Tapi tunggu sebentar," Anda mungkin berkata, "itu untuk apa UIViews! "Itu benar, tetapi ada trik untuk itu: setiap UIView berisi lapisan root yang menariknya!

39
Mat

Secara sederhana, UIView mewarisi dari UIResponder, menangani acara dari pengguna, berisi CALayer, yang diwarisi dari NSObject, terutama fokus pada rendering, animasi, dll. 

26
Forrest

UIView adalah wadah untuk CALayers. Menggunakan UIKit.

CALayer tempat kami menggambar konten. Menggunakan CoreGraphics

Jika Anda bekerja dengan kontrol khusus seperti fitur, akan lebih baik untuk melanjutkan dengan tampilan tunggal yang mengandung lebih banyak layer untuk rendering asli yang akurat. Karena CALayers tidak berbobot dari UIView.

Untuk membuat kerangka umum untuk Mac dan iOS, ikuti desain untuk aplikasi Anda menggunakan CALayers. Karena tersedia di kedua platform. 

UIView memiliki fitur seperti acara sentuh yang dicapai dengan menggunakan delegasi -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event, tochesStart menyukai acara dan fitur UIKit lainnya.

Untuk bekerja dengan CALayers gunakan pengetahuan Core Graphics. Untuk setiap tampilan sederhana rendering UIView sudah cukup. 

7
Gobi M

Perbedaan besar adalah UIView dirancang untuk CocoaTouch pada perangkat seluler. Itu menambahkan beberapa pengendali acara yang CALayer tidak menyediakan.

0
musixlemon