iOS de Base de l'Animation: CALayer bringSublayerToFront?
Comment dois-je apporter une CALayer sublayer
à l'avant de tous les sous-couches, analogue à -[UIView bringSubviewToFront]
?
Vous devez vous connecter pour publier un commentaire.
Comment dois-je apporter une CALayer sublayer
à l'avant de tous les sous-couches, analogue à -[UIView bringSubviewToFront]
?
Vous devez vous connecter pour publier un commentaire.
Je suis curieux de savoir pourquoi aucune de ces réponses mentionnent la zPosition attribut sur CALayer. Core Animation regarde cet attribut à la figure couche de l'ordre de rendu. Plus la valeur est élevée, plus il est à l'avant. Ces réponses à tous les travaux aussi longtemps que votre zPosition est 0, mais pour apporter une couche à l'avant, jeu de ses zPosition valeur supérieure à toutes les autres sous-couches.
C'est la variation de @MattDiPasquale de mise en œuvre qui reflète UIView logique et plus précisément:
Note: si vous n'utilisez pas l'ARC, vous voudrez peut-être ajouter
[layer retain]
au sommet et à la[layer release]
au bas de ces deux fonctions pour s'assurerlayer
n'est pas accidentellement détruits dans un cas, il a conserver count = 1.removeFromSuperlayer
méthodes sont inutiles car il sera supprimé automatiquement lors de l'appel deinsertSublayer
.Droit code ici
Swift 4 version.
Idée que la couche elle-même a
bringToFront
etsendToBack
méthodes.Utilisation:
C'est le bon code:
Vous pouvez implémenter cette fonctionnalité dans une catégorie sur CALayer comme suit:
CALayer+Extension.h
CALayer+Extension.m
Et facile d'accès, vous pouvez
#import "CALayer+Extension.h"
dans votre projet Préfixe.pch (en-tête précompilé) fichier.Créer une catégorie de CALayer comme ceci:
Je ne pense pas que de telles méthodes existent, mais il est facile de rouler votre propre.