2010-08-16 3 views
12

Le dégradé horizontal fonctionne correctement. Est-il possible d'obtenir un dégradé de couleur vertical à partir du dégradé horizontal? J'ai vu une question connexe à ce sujet où ils l'ont fait en faisant tourner les cadres.gradient de couleur vertical

Existe-t-il un moyen plus simple d'obtenir un dégradé vertical?

Répondre

2

Pourquoi ne pas le faire pivoter à 90º? À partir de votre commentaire, il semble que vous le faites via CAGradientLayer. CAGradientLayer est une sous-classe de CALayer, qui a une propriété transform. Cette propriété transform prend un CATransform3D, qui est une structure qui représente une sorte de transformation linéaire à appliquer à la couche (telle que la mise à l'échelle, la translation ou la rotation).

Donc vraiment vous juste besoin de make a rotational CATransform3D et le définir comme la propriété transform de votre CAGradientLayer.

Vous pourriez probablement aussi faire ce travail en tripotant les startPoint et endPoint (ce qui serait probablement plus simple).

+0

J'ai utilisé gradient.startpoint et gradient.endpoint pour la rotation ... est-ce correct ...? J'ai besoin d'une rotation de 180 degrés ... dois-je utiliser la même logique que ci-dessus. – darshan

+0

@darshan a modifié sa réponse –

76

La valeur par défaut startPoint et endPoint aurait l'affichage dégradé vos couleurs de haut en bas (ce qui dans mon esprit est un gradient vertical). Si vous voulez que le gradient pour afficher de gauche à droite (encore une fois dans mon esprit c'est un gradient horizontal), utilisez ce code sur votre CAGradientLayer:

[gradientLayer setStartPoint:CGPointMake(0.0, 0.5)]; 
    [gradientLayer setEndPoint:CGPointMake(1.0, 0.5)]; 

Une transformation 3D est inutile.

+0

bon mec +1 – Warewolf