En ce moment, j'ai un GA calque de dégradé où j'ai défini les couleurs, mais je voudrais définir le point de couleur sur (au lieu du haut au centre, en haut à gauche) et en bas à (au lieu du bas du centre vers le bas à droite) juste pour changer un peu les choses. Réflexions? Ci-dessous le code que j'ai jusqu'à présent ... J'ai inclus l'animation de base parce que je suis une animation entre les couleurs.
- (id)init {
self = [super init];
UIView *gradientView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.w, self.h)];
[self addSubview:gradientView];
[self sendSubviewToBack:gradientView];
topColor = [UIColor colorWithRed:0.012 green:0.012 blue:0.012 alpha:1];
bottomColor = [UIColor colorWithRed:1.000 green:0.765 blue:0.235 alpha:1];
gradient = [CAGradientLayer layer];
gradient.frame = gradientView.frame;
gradient.colors = [NSArray arrayWithObjects:(id)topColor.CGColor, (id)bottomColor.CGColor, nil];
gradient.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:0.7], nil];
[gradientView.layer addSublayer:gradient];
[self performSelector:@selector(animateColors) withObject:self afterDelay:2.0];
currentColorCount = 1;
return self;
}
A droite (ce que j'ai) à gauche (ce que j'aimerais)
Les propriétés startPoint
et endPoint
d'un CAGradientLayer
sont définies dans le "système de coordonnées d'unité". Dans le système de coordonnées d'unité:
(0,0)
correspond aux plus petites coordonnées du rectangle de délimitation du calque, qui sur iOS est son coin supérieur gauche à moins que le calque n'ait été transformé;(1,1)
correspond aux coordonnées les plus grandes du rectangle des limites du calque, qui sur iOS est son coin inférieur droit, sauf si le calque a été transformé.Ainsi, organiser votre dégradé comme vous le souhaitez devrait être aussi simple que cela:
gradient.startPoint = CGPoint.zero
gradient.endPoint = CGPoint(x: 1, y: 1)