Les deux ont la plupart des mêmes attributs, prennent en charge différents types d'animation et représentent des données différentes. Quelles sont les différences entre UIView et CALayer?
Réponses
Trop de publicités?Sur iOS, chaque UIView est soutenu par un Noyau d'Animation CALayer, donc, vous faites affaire avec CALayers lors de l'utilisation d'une UIView, même si vous ne pouvez pas le réaliser. Contrairement à NSViews sur le Mac, qui a évolué avant de Core Animation existé, UIViews sont destinés à être léger wrappers autour de ces CALayers.
Comme je l'ai décrit dans la question similaire, "Quand utiliser CALayer sur le Mac/iPhone?", en travaillant directement avec CALayers ne vous donne pas des avantages de performance significatifs sur UIViews. L'une des raisons que vous pourriez vouloir construire un élément de l'interface utilisateur avec CALayers au lieu de UIViews est qu'il peut être très facilement porté à la Mac. UIViews sont très différents de NSViews, mais CALayers sont presque identiques sur les deux plates-formes. C'est pourquoi le Cœur de l'Intrigue cadre énonce des graphiques à l'aide de CALayers à la place des autres éléments de l'INTERFACE utilisateur.
Une chose UIViews fournir plus de CALayers est prise en charge intégrée de l'interaction de l'utilisateur. Ils gèrent les hit-essai sur la touche, et à d'autres actions que vous devez construire vous-même si la gestion d'une hiérarchie de CALayers. Il n'est pas difficile à mettre en œuvre vous-même, mais c'est un code supplémentaire dont vous auriez besoin pour écrire lors de la construction d'un CALayer seule interface.
Vous aurez souvent besoin d'accéder aux couches sous-jacentes pour une UIView lors de la réalisation des animations plus complexes que la base de UIView de la classe le permet. UIView de capacités d'animation ont augmenté le SDK iOS a mûri, mais il y a toujours quelques choses qui sont faites par l'interaction avec le sous-jacent CALayer.
Extrait du blog de Ray Wenderlich ( tutoriel )
Les CALayers sont simplement des classes représentant un rectangle à l'écran avec un contenu visuel. "Mais attendez une minute," direz-vous, "c'est ce à quoi UIViews est destiné!" C'est vrai, mais il y a une astuce à cela: chaque UIView contient un calque racine vers lequel il est dessiné!