Setiap orang masih berusia 404 tahun, hari ini kami menyelami U tercinta kami, lebih tepatnya dalam Kerangka UIKit. Singkatnya, UIKit adalah framework UI yang memudahkan developer membuat antarmuka untuk interaksi pengguna. Namun terlepas dari kenyataan bahwa UIKit memiliki banyak fungsi, ukurannya dihitung dalam puluhan kilobyte. Alasannya adalah kenyataan bahwa UIKit di iOS modern pada dasarnya adalah header payung yang menyediakan satu titik impor.
Masukkan apa adanya
UIKit berisi semua komponen yang diperlukan untuk menyediakan akses ke perangkat yang digunakan pengguna untuk berkomunikasi dengan aplikasi Anda. Ini adalah akselerator, tombol keras, keyboard eksternal, perangkat input khusus untuk penyandang disabilitas, mouse, dan pensil (Apple Pencil).
Jangan lupa bahwa selain perangkat input yang tercantum di atas, UIKit menerima dan memproses banyak informasi dari sistem, dimulai dengan peristiwa tingkat rendah dari siklus hidup aplikasi dan peringatan memori, diakhiri dengan pemberitahuan push yang lebih tinggi.
Untuk melayani secara efisien sejumlah besar event source yang masuk, UIKit membutuhkan Event Loop, yang biasa kami sebut RunLoop . Di sinilah UIKit memperkenalkan konsep utas utama yang secara berurutan melayani sumber masuk dan kode kami. Secara umum diterima bahwa utas utama adalah sesuatu yang melekat dalam aplikasi, tetapi pada kenyataannya itu adalah abstraksi yang diperkenalkan dan disediakan oleh UIKit.

, RunLoop' — - , . , UIKit UI . , . , , . . , , RunLoop', UIKit' UI Tracking Mode. UI, .
, ?
Haptic. UI , , UIKit. , Apple Core Audio.
, . iOS, , 2D , - . : , , GPU. : .
, Layout
UIKit — . , view' , subview subview. . , , , .
, , autolayout 3rd-party . , iOS — , .
autolayout iOS . UIView , Core Animation, c anchorPoint .
.
— . - . Apple , LayerKit, Core Animation.
Core Animation — , . , , , - . , - , Core Animation , .
Core Animation , . UIView CALayer, . , view, . : , UIView UI, CALayer. view, . frame, bounds, center, backgroundColor CALayer.

UIView : UIView User Interaction, CALayer .
Core Animation iOS UIKit
UIView, macOS AppKitNSView. macOS iOS: — , iOS. Core Animation ApplegeometryFlippedCALayer. macOS , UIKitgeometryFlipped = true. , , , .
, Core Animation , . , CALayer - CoreGraphics . , CAShapeLayer, CATextLayer, CAGradientLayer . , GPU.
, UIView
draw(in:). , GPU,draw(in:)CoreGraphics, CPU. UI. , CoreGraphics ( , ), CPU.
-
CoreAnimation, : - CALayer ( ) , .
, CoreAnimation , , - . , CATransaction. CATransaction — , , . UIKit CATransaction RunLoop', . , «» . , CATransaction, .
CALayer , UIView - . frame UIView , , . , UIView view . , , action(for:forKey:) View nil' , UIView.animate(...), .
, actions, - .
, addSublayer() UIView UIView.animate(withDuration:5). : 5 , ( ) . .
⚠️ UIView . , view , .
-
, , . CAAnimation, ( ), -, , «», «» . , CAAnimation — , . , , « »:
[CABasicAnimation]— ,fromPointtoPoint[CAKeyFrameAnimation]— , ,valueskeyTimes[CASpringAnimation]—
presentationLayer . , . , , , . , «» «» . presentationLayer , , . :
( )
(
fromValuepresentation )(
hitTest(_:with:)(point(inside:with:)) , ,point(inside:with:))
, isRemovedOnCompletion. false .
Perlu diingat bahwa animasi bergantung pada siklus hidup aplikasi dan lapisan itu sendiri. Saat aplikasi masuk ke latar belakang atau lapisan dihapus dari superview, animasi CAAnimation akan dihapus, jadi jika Anda meminimalkan aplikasi di tengah animasi, Anda akan melihat objek dalam keadaan sebelum animasi dimulai.
Dan inilah akhir dari dongeng tersebut
Saya harap Anda telah menemukan sesuatu yang baru atau telah menguraikan pengetahuan yang ada di rak, setidaknya sedikit. Semua proyek menarik dan kode bersih: D