Tout le monde est encore 404, aujourd'hui nous plongeons dans notre U bien-aimé, ou plus précisément dans le Framework UIKit. En bref, UIKit est un cadre d'interface utilisateur qui permet aux développeurs de créer plus facilement une interface d'interaction avec l'utilisateur. Mais malgré le fait que UIKit contient une énorme quantité de fonctionnalités, sa taille est calculée en dizaines de kilo-octets. La raison en est le fait que UIKit dans iOS moderne est essentiellement un en- tête parapluie qui fournit un point d'importation unique.
Entrée telle qu'elle est
UIKit contient tous les composants nécessaires pour fournir l'accès aux appareils par lesquels l'utilisateur communique avec votre application. Ce sont des accélérateurs, des boutons durs, des claviers externes, des périphériques d'entrée spéciaux pour les personnes handicapées, des souris et des crayons (Apple Pencil).
N'oubliez pas qu'en plus du périphérique d'entrée répertorié ci-dessus, UIKit reçoit et traite beaucoup d'informations du système, des événements de bas niveau du cycle de vie de l'application et des avertissements de mémoire, aux notifications Push à un niveau supérieur.
Afin de servir efficacement un si grand nombre de sources d'événements entrants, UIKit a besoin d'une boucle d'événement, que nous appelions RunLoop . C'est là qu'UIKit introduit le concept d'un thread principal qui sert séquentiellement les sources entrantes et notre code. Il est généralement admis que le thread principal est quelque chose d'inhérent à l'application, mais en fait c'est une abstraction que UIKit introduit et fournit.

, 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
.
Il convient de rappeler que les animations dépendent du cycle de vie de l'application et de la couche elle-même. Lorsque l'application passe en arrière-plan ou que le calque est supprimé de la vue de supervision, les animations CAAnimation
sont supprimées, donc si vous minimisez l' application au milieu de l'animation, vous verrez l'objet dans l'état dans lequel il se trouvait avant le début de l'animation.
Et voici la fin du conte de fées
J'espère que vous avez trouvé quelque chose de nouveau ou que vous avez mis les connaissances existantes sur les tablettes, au moins un peu. Tous les projets intéressants et code propre: D