Cómo agregar CAGradientLayer a UIButton

Estoy tratando de modificar el aspecto de un button y dediqué un largo time a tratar de descubrir por qué no puedo aplicar un degradado como con este código simple a continuación:

[self.playButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; self.playButton.backgroundColor = [UIColor blackColor]; CAGradientLayer *gradient = [[CAGradientLayer alloc] init]; gradient.frame = self.playButton.bounds; gradient.position = CGPointMake(self.playButton.bounds.size.width/2, self.playButton.bounds.size.height/2); gradient.colors = [NSArray arrayWithObjects: (id)[UIColor greenColor].CGColor, (id)[UIColor networkingColor].CGColor, nil]; gradient.locations = [NSArray arrayWithObjects: [NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:1.0f], nil]; [self.playButton.layer addSublayer:gradient]; 

Se ejecuta, pero no pasa nada. Sé que el código debería funcionar, porque muchos otros lo usan y al cambiar el self.playButton para decir self.view entonces agrega una hermosa capa de gradiente rojo-verde a la UIView .

Puede valer la pena señalar que el button personalizado se define como un IBOutlet como este:

 @property (weak, nonatomic) IBOutlet UIButton *playButton; 

Cualquier ayuda es muy apreciada.

ACTUALIZAR Y FIJAR

Al cambiar el button para usar una image escalable en lugar de un degradado, olvidé volver a comentar el código de degradado (después de intentar la idea de rokjarc ) y al cambiar el contenido de imageView.content del button a UIViewContentModeScaleToFill el degradado que se muestra …

 self.playButton.imageView.contentMode = UIViewContentModeScaleToFill; 

Así que gracias rokjarc , supongo: D

Simplemente cambia

 self.playButton.backgroundColor = [UIColor blackColor]; 

a

 self.playButton.backgroundColor = [UIColor clearColor]; 

Acabo de probar y funciona.