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, . frame
, bounds
, center
, backgroundColor
CALayer.
UIView : UIView User Interaction, CALayer .
Core Animation iOS UIKit
UIView
, macOS AppKitNSView
. macOS iOS: — , iOS. Core Animation ApplegeometryFlipped
CALayer. 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]
— ,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