IOS do dispositivo IOS

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




All Articles