UI perangkat iOS

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, .  frameboundscenterbackgroundColor  CALayer.

UIView : UIView User Interaction, CALayer .

Core Animation iOS UIKit  UIView, macOS AppKit  NSView. macOS iOS: — , iOS. Core Animation Apple  geometryFlipped  CALayer. macOS , UIKit   geometryFlipped = true  . , , , .

, Core Animation , . , CALayer - CoreGraphics . ,  CAShapeLayerCATextLayerCAGradientLayer  . , 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]— ,  fromPoint  toPoint

  • [CAKeyFrameAnimation] — , ,  values  keyTimes

  • [CASpringAnimation]

 presentationLayer  . , . , , , . , «» «» .  presentationLayer  , , . :

  • ( )

  • (  fromValue  presentation )

  • (  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




All Articles