color ios ios6

ios - color - gradient background swift 4



Gradiente de fondo UIView con vista de generador de interfaz (2)

Quiero usar un degradado como fondo para una UIView. Sé que esto normalmente se hace con imágenes y la propiedad backgroundColor . Sin embargo, quiero aprender cómo hacer esto en el código. Usando https://stackoverflow.com/a/1931498/99683 puedo crear un UIView programación y darle una capa de degradado. Esto funciona genial

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 340, 280, 100)]; CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = view.bounds; gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor redColor] CGColor], (id)[[UIColor yellowColor] CGColor], nil]; [view.layer insertSublayer:gradient atIndex:0]; [self.view addSubview:view];

Sin embargo, si coloco una vista en Interface Builder (con el fondo establecido para borrar) y pruebo lo mismo, el degradado nunca aparece.

CAGradientLayer *gradient2 = [CAGradientLayer layer]; gradient2.frame = self.containerView.bounds; gradient2.colors = [NSArray arrayWithObjects:(id)[[UIColor blueColor] CGColor], (id)[[UIColor greenColor] CGColor], nil]; [self.containerView.layer insertSublayer:gradient2 atIndex:0];

¿Hay algo más que deba hacer en IB o código para que esto funcione?


Me enfrenté al mismo problema, pero finalmente me di cuenta de que UIView no se había creado en el punto en el que intentas establecer el degradado de fondo, que supongo que en tu caso podría ser uno de los siguientes: viewDidLoad o - viewWillAppear debido a que

self.containerView.bounds será {{0, 0}, {0, 0}}

En su lugar, debe establecer la capa de degradado dentro

viewDidAppear

en ese punto las vistas han sido creadas.