我正在尝试创建一个自定义的UIButton类,除了在绘制按钮的背景,并使用insertSubLayer后面的方法将其添加为子图层时,它仍然出现在UIButton Textlabel的前面。
我的代码发布在下面,非常感谢任何帮助。
CALayer *layer = self.layer;
layer.cornerRadius = 3.0f;
layer.masksToBounds = YES;
layer.borderWidth = 1.0f;
layer.borderColor = [UIColor colorWithWhite:0.5f alpha:0.5f].CGColor;
self.titleLabel.textColor = [UIColor greenColor];
//layer.backgroundColor = [UIColor greenColor].CGColor;
bgColor = [CAGradientLayer layer];
bgColor.frame = self.layer.bounds;
self.backgroundColor = [UIColor colorWithWhite:1 alpha:1];
bgColor.colors = [NSArray arrayWithObjects:
(id)[UIColor colorWithWhite:0.97f alpha:1].CGColor,
(id)[UIColor colorWithWhite:0.87f alpha:1].CGColor,
nil];
bgColor.locations = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:1],
nil];
[self.layer addSublayer:bgColor];
[self.layer insertSublayer:bgColor below:layer];
答案 0 :(得分:1)
self.layer
和layer
指向同一个对象。你要求图层在自身后面插入一个子图层 - 这是不可能的。子图层包含在父图层中。尝试
[self.layer insertSublayer:bgColor atIndex:0];
而不是
[self.layer addSublayer:bgColor];
[self.layer insertSublayer:bgColor below:layer];
这将在按钮的图层层次结构中的最低点添加渐变。