Interfaz de usuario del dispositivo IOS

Todo el mundo sigue siendo 404, hoy nos sumergimos en nuestra querida U, o más precisamente en UIKit Framework. En resumen, UIKit es un marco de interfaz de usuario que facilita a los desarrolladores la creación de una interfaz para la interacción del usuario. Pero a pesar de que UIKit contiene una gran cantidad de funcionalidad, su tamaño se calcula en decenas de kilobytes. La razón de esto es el hecho de que UIKit en iOS moderno es esencialmente un  encabezado general que proporciona un único punto de importación. 

Entrada como está

UIKit contiene todos los componentes necesarios para brindar acceso a los dispositivos a través de los cuales el usuario se comunica con su aplicación. Se trata de acelerómetros, botones de hardware, teclados externos, dispositivos de entrada especiales para personas con discapacidad, ratones y lápices (Apple Pencil).

No olvide que además del dispositivo de entrada mencionado anteriormente, UIKit recibe y procesa mucha información del sistema, comenzando con eventos de ciclo de vida de la aplicación de bajo nivel y advertencias de memoria, terminando con notificaciones push de nivel superior.

Para servir de manera eficiente a un número tan grande de fuentes de eventos entrantes, UIKit necesita un bucle de eventos, que solíamos llamar  RunLoop . Aquí es donde UIKit introduce el concepto de un hilo principal que sirve secuencialmente las fuentes entrantes y nuestro código. En general, se acepta que el hilo principal es algo inherente a la aplicación, pero de hecho es una abstracción que UIKit introduce y proporciona.

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

Vale la pena recordar que las animaciones dependen del ciclo de vida de la aplicación y de la propia capa. Cuando la aplicación pasa a segundo plano o la capa se elimina de la  supervista, las  animaciones  CAAnimation se eliminan, por lo que si minimiza la aplicación en medio de la animación, verá el objeto en el estado en el que estaba antes de que comenzara la animación.

Y aquí está el final del cuento de hadas

Espero que hayas encontrado algo nuevo o hayas puesto el conocimiento existente en los estantes, al menos un poco. Todos los proyectos interesantes y código limpio: D




All Articles