¿Cómo cambiar los puntos de color CAGradientLayer?

En este momento tengo una capa GA Gradient donde he establecido los colors, pero me gustaría establecer el punto de color (en lugar de centro superior, arriba a la izquierda) y abajo a (en lugar de centro inferior a inferior derecho ) solo para cambiar las cosas un poco. ¿Pensamientos? A continuación se muestra el código que tengo hasta ahora … Incluí la animation principal porque soy animation entre colors.

- (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 la derecha (Lo que tengo) a la izquierda (lo que me gustaría)

A la derecha (Lo que tengo) a la izquierda (lo que me gustaría)

Las properties startPoint y endPoint de un CAGradientLayer se definen en el "sistema de coorderadas de la unidad". En el sistema de coorderadas de la unidad:

  • (0,0) corresponde a las coorderadas más pequeñas del rectángulo de límites de la capa, que en iOS es su esquina superior izquierda a less que la capa se haya transformado;
  • (1,1) corresponde a las coorderadas más grandes del rectángulo de límites de la capa, que en iOS es su esquina inferior derecha a less que la capa se haya transformado.

Por lo tanto, organizar su degradado de la forma que desee debería ser así de simple:

 gradient.startPoint = CGPointZero; gradient.endPoint = CGPointMake(1, 1);