Todo mundo ainda é 404, hoje estamos mergulhando em nosso amado U, para ser mais preciso no framework UIKit. Resumindo, o UIKit é uma estrutura de UI que torna mais fácil para os desenvolvedores criarem uma interface para interação com o usuário. Mas apesar do fato de que o UIKit contém uma grande quantidade de funcionalidade, seu tamanho é calculado em dezenas de kilobytes. A razão para isso é o fato de que o UIKit no iOS moderno é essencialmente um cabeçalho guarda - chuva que fornece um único ponto de importação.
Entrada como está
O UIKit contém todos os componentes necessários para fornecer acesso aos dispositivos por meio dos quais o usuário se comunica com seu aplicativo. São aceleradores, botões físicos, teclados externos, dispositivos de entrada especiais para pessoas com deficiência, mouses e lápis (Apple Pencil).
Não se esqueça de que, além do dispositivo de entrada listado acima, o UIKit recebe e processa muitas informações do sistema, desde eventos de baixo nível do ciclo de vida do aplicativo e avisos de memória, até notificações push em um nível superior.
Para atender com eficiência a um grande número de fontes de eventos de entrada, o UIKit precisa de um Loop de Eventos, que usamos para chamar RunLoop . É aqui que o UIKit introduz o conceito de um thread principal que serve sequencialmente as fontes de entrada e nosso código. É geralmente aceito que o thread principal é algo integral que o aplicativo possui, mas na verdade é uma abstração que o UIKit apresenta e fornece.

, 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 lembrar que as animações dependem do ciclo de vida da aplicação e da própria camada. Quando o aplicativo vai para o plano de fundo ou a camada é removida da visualização, as animações CAAnimation
são removidas, portanto, se você minimizar o aplicativo no meio da animação, verá o objeto no estado em que estava antes do início da animação.
E aqui está o fim do conto de fadas
Espero que você tenha encontrado algo novo ou tenha decomposto o conhecimento existente nas prateleiras, pelo menos um pouco. Todos os projetos interessantes e código limpo: D