Слой, добавленный к вашему виду (addSublayer
), рисуется перед собственным слоем вашего вида, где и происходит рисование всего вашего вида. Вам нужно нарисовать градиент в своем слое вида. Для этого внедрите +layerClass
в ваше представление, указав, что вы хотите, чтобы слой вашего представления был градиентным представлением.
Так, например (в собственном коде представления):
+(Class)layerClass {
return [CAGradientLayer class];
}
-(void)awakeFromNib {
[super awakeFromNib];
CAGradientLayer* layer = (CAGradientLayer*)self.layer;
layer.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
layer.cornerRadius = 8;
layer.masksToBounds = NO;
layer.shadowOffset = CGSizeMake(-5, 5);
layer.shadowRadius = 8;
layer.shadowOpacity = 0.75;
}
Если затем вы реализуете drawRect:, вы, конечно, уничтожите свой градиент и закругленные углы. Есть способы обойти это ...