webentwicklung-frage-antwort-db.com.de

Was ist der Unterschied zwischen einem UIView und einem CALayer?

Beide haben die meisten der gleichen Attribute, beide unterstützen verschiedene Arten von Animationen, beide repräsentieren unterschiedliche Daten.

95
Oleg Danu

Unter iOS wird jeder UIView von einem Core-Animations-CALayer unterstützt, sodass Sie sich bei Verwendung eines UIView mit CALayers beschäftigen, auch wenn Sie dies möglicherweise nicht wissen. Im Gegensatz zu NSViews auf dem Mac, die entwickelt wurden, bevor Core Animation existierte, sind UIViews dazu gedacht, diese CALayers leicht zu gestalten.

Wie ich in der ähnlichen Frage beschreibe "Wann verwendet man CALayer auf dem Mac/iPhone?" , die direkte Arbeit mit CALayers bietet Ihnen keine wesentlichen Leistungsvorteile gegenüber UIViews. Ein Grund, aus dem Sie ein Benutzeroberflächenelement mit CALayers anstelle von UIViews erstellen möchten, besteht darin, dass es sehr einfach auf den Mac portiert werden kann. UIViews unterscheiden sich stark von NSViews, aber CALayers sind auf beiden Plattformen nahezu identisch. Aus diesem Grund legt das Core Plot-Framework seine Grafiken mit CALayers anstelle von anderen UI-Elementen an.

UIViews bieten gegenüber CALayers eine integrierte Unterstützung für die Benutzerinteraktion. Sie erledigen Trefferprüfungen für Berührungen und andere damit zusammenhängende Aktionen, die Sie zum Erstellen einer Hierarchie von CALayers selbst erstellen müssten. Es ist nicht so schwer, dies selbst zu implementieren, aber es ist zusätzlicher Code, den Sie schreiben müssen, wenn Sie eine reine CALayer-Schnittstelle erstellen.

Wenn Sie komplexere Animationen ausführen, als die UIView-Basisklasse zulässt, müssen Sie für eine UIView häufig auf die darunter liegenden Ebenen zugreifen. Die Animationsfunktionen von UIView sind mit der Reifung des iOS-SDK gewachsen. Es gibt jedoch noch ein paar Dinge, die am besten durch die Interaktion mit dem zugrunde liegenden CALayer erledigt werden können.

211
Brad Larson

Aus dem Ray Wenderlich Blog ( Tutorial )

CALayers sind einfach Klassen, die ein Rechteck auf dem Bildschirm darstellen mit visuellem Inhalt. "Aber warte eine verdammte Minute", kannst du sagen, "das ist Wofür UIViews sind! ”Das ist wahr, aber es gibt einen Trick: Jedes UIView enthält eine Wurzelebene, zu der es zeichnet!

39
Mat

Vereinfacht gesagt, UIView erbt von UIResponder, behandelt Ereignisse von Benutzern und enthält CALayer, das von NSObject erbt. 

26
Forrest

UIView ist ein Container für CALayers. UIKit verwenden.

CALayer wo wir den Inhalt zeichnen. CoreGraphics verwenden

Wenn Sie mit benutzerdefinierten Steuerelementen wie Features arbeiten, empfiehlt es sich, mit der Einzelansicht fortzufahren, die mehr Ebenen für das genaue native Rendering enthält. Da CALayers schwerelos als UIView ist.

Um ein allgemeines Skelett für Mac und iOS zu erstellen, folgen Sie dem Design für Ihre App mithilfe von CALayers. Da ist es in beiden Plattformen verfügbar. 

UIView mit Feature-ähnlichen Berührungsereignissen, die mit Delegierten -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event, tochesStart wie Ereignissen und anderen UIKit-Funktionen erzielt werden.

Um mit CALayers zu arbeiten, verwenden Sie das Wissen der Kerngrafik. Für das Rendern einer einfachen Ansicht genügt UIView

7
Gobi M

Der große Unterschied ist, dass UIView für CocoaTouch auf mobilen Geräten entwickelt wurde. Es wird ein Event-Handler hinzugefügt, den CALayer nicht bereitgestellt hat.

0
musixlemon