CALayer d'un redimensionnement automatique sur iPhone/iPad: Comment?
Je suis en train de créer une sous-classe UIView ("GradientView") qui va se remplir d'un dégradé de couleurs différentes. J'ai mis en œuvre par l'ajout d'une CAGradientLayer comme une sous-couche de UIView de la couche.
Il avait l'air bien, mais lorsque l'écran a été tourné, il n'a pas redimensionner le calque de dégradé. N'ayant aucune chance de trouver un BOOL bien sur la couche à bascule, j'ai remplacé layoutSubviews dans le GradientView.
-(void)layoutSubviews {
self.gradientLayer.frame = self.bounds;
}
Cela fonctionne, mais le genre de choses derrière le GradientView est encore visible pendant la rotation de l'animation. Quelle est la meilleure façon de "autoresize" qui CAGradientLayer pour correspondre à son parent de la couche de limites, de sorte que l'animation est fluide (comme pour UIView d'un redimensionnement automatique)?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez probablement vous en sortir avec la définition de l' +layerClass méthode sur un custom UIView...
Vous pouvez initialiser la couche de votre contrôleur de viewDidLoad() (ou autre ville), quelque chose comme...
Je voudrais:
Augmentation la taille de votre point de vue à la maximum de chaque dimension dans le willRotateToInterfaceOrientation code. (Par exemple pour un 320x480 iPhone - définir la grise pour 480x480).
Définir les limites conformément à la nouvelle-rotation de la vue dans le didRotateFromInterfaceOrientation fonction.
Cela devrait faire en sorte que le point de vue est assez grand de sorte que, indépendamment de la façon dont elle est orientée au cours de l'animation, il couvre la totalité de l'écran. Il ne sera pas "lisse" - parce que le gradient devra être tourné, mais au moins, vous ne verrez pas derrière le calque dans le milieu de la rotation.
Noter que le retour CAGradientLayer que la couche de la classe fonctionne uniquement si vous définissez le point de vue couleur d'arrière-plan transparent. Vous aurez besoin de mettre la couche de couleur d'arrière-plan si vous avez besoin d'une couleur autre que le transparent.
dans mon cas ce travail:
(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
. Quand je tourne, l'ancienne couche est encore sortie. Le nouveau calque en mode paysage apparaissent toujours. Merci de m'aider