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.
Esta biblioteca admite establecer un fondo de degradado en Storyboard mediante IB_DESIGNABLE / IBInspectable.
Es realmente útil.