我在将渐变应用于多个视图时遇到一些问题,这是代码:
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = view6.bounds;
gradient.frame = view7.bounds;
gradient.frame = view8.bounds;
gradient.frame = view9.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor colorWithRed:231.0/255.0 green:231.0/255.0 blue:231.0/255.0 alpha:1.0] CGColor], nil];
[view6.layer insertSublayer:gradient atIndex:0];
[view7.layer insertSublayer:gradient atIndex:0];
[view8.layer insertSublayer:gradient atIndex:0];
[view9.layer insertSublayer:gradient atIndex:0];
那么我做错了什么?目前,渐变仅应用于view9,这让我有点难过。欢迎任何建议。
谢谢!
答案 0 :(得分:2)
你需要制作4个渐变,每层一个,但你可以重复使用颜色。
目前,每次将该图层添加为子图层时,它都会先从上一层中拉出。
答案 1 :(得分:0)
每次要将其添加到子图层时,都应该创建图层。
好的方法是创建GradientView:UIView
类,而不是覆盖drawRect
方法,并在代码中的另一个位置绘制渐变或添加渐变图层到子视图。这种方式更有用,因为如果要更改渐变颜色,则必须仅在一个位置更改代码(GradientView)
。
另一种方法是create方法,它将为每个视图构建渐变层。
- (CAGradientLayer *)gradientLayerWithFrame:(CGRect)frame colors:(NSArray *)colors
{
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = frame;
gradient.colors = colors;
return gradient;
}
...
NSArray *colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor colorWithRed:231.0/255.0 green:231.0/255.0 blue:231.0/255.0 alpha:1.0] CGColor], nil];
[view6.layer insertSublayer:[self gradientLayerWithFrame:view6.bounds colors:colors] atIndex:0];
[view7.layer insertSublayer:[self gradientLayerWithFrame:view7.bounds colors:colors] atIndex:0];
...