IOS-Geräte-Benutzeroberfläche

Jeder ist noch 404, heute tauchen wir in unser geliebtes U ein, genauer gesagt in das UIKit Framework. Kurz gesagt, UIKit ist ein UI-Framework, das Entwicklern das Erstellen einer Schnittstelle für die Benutzerinteraktion erleichtert. Trotz der Tatsache, dass UIKit eine große Menge an Funktionen enthält, wird seine Größe in zehn Kilobyte berechnet. Der Grund dafür ist die Tatsache, dass UIKit in modernem iOS im Wesentlichen ein  Umbrella-Header ist , der einen einzigen Importpunkt bietet. 

Eingabe wie sie ist

UIKit enthält alle erforderlichen Komponenten, um den Zugriff auf die Geräte zu ermöglichen, über die der Benutzer mit Ihrer Anwendung kommuniziert. Dies sind Beschleunigungsmesser, Hardwaretasten, externe Tastaturen, spezielle Eingabegeräte für Menschen mit Behinderungen, Mäuse und Stifte (Apple Pencil).

Vergessen Sie nicht, dass UIKit zusätzlich zu dem oben aufgeführten Eingabegerät viele Informationen vom System empfängt und verarbeitet, von Ereignissen auf niedriger Ebene des Anwendungslebenszyklus und Speicherwarnungen bis hin zu Push-Benachrichtigungen auf einer höheren Ebene.

Um eine so große Anzahl eingehender Ereignisquellen effizient bedienen zu können, benötigt UIKit eine Ereignisschleife, die wir zum Aufrufen von  RunLoop verwendet haben . Hier stellt UIKit das Konzept eines Hauptthreads vor, der nacheinander eingehende Quellen und unseren Code bedient. Es ist allgemein anerkannt, dass der Hauptthread ein integraler Bestandteil der Anwendung ist, aber tatsächlich handelt es sich um eine Abstraktion, die UIKit einführt und bereitstellt.

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

Es ist zu beachten, dass Animationen vom Lebenszyklus der Anwendung und der Ebene selbst abhängen. Wenn die Anwendung in den Hintergrund tritt oder die Ebene aus der  Übersicht entfernt wird, werden die  Animationen  CAAnimation entfernt. Wenn Sie also die Anwendung in der Mitte der Animation reduzieren, sehen Sie das Objekt in dem Zustand, in dem es sich vor Beginn der Animation befand.

Und hier ist das Ende des Märchens

Ich hoffe, Sie haben etwas Neues gefunden oder das vorhandene Wissen zumindest ein wenig in die Regale gestellt. Alle interessanten Projekte und sauberer Code: D.




All Articles