1

我正在尝试制作一个自定义 UIButton 类,但在绘制按钮的背景并使用 insertSubLayer behind: 方法将其添加为子层时,它仍然出现在 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];
4

1 回答 1

2

self.layerlayer在您的代码中指向同一个对象。您要求图层在其自身后面插入一个子图层 - 这是不可能的。子层包含在父层中。尝试

[self.layer insertSublayer:bgColor atIndex:0];

代替

[self.layer addSublayer:bgColor]; 
[self.layer insertSublayer:bgColor below:layer];

这将在按钮图层层次结构中的最低点添加渐变。

于 2012-07-31T10:52:14.607 回答