NSViewにグラデーションの背景と影の両方を持たせたいので、次のようにメソッドをサブクラス化NSView
してオーバーライドしました- (void)awakeFromNib
。
[self setWantsLayer:YES]; // view's backing store is using a Core Animation Layer
CAGradientLayer *backgroundGradient = [[CAGradientLayer alloc] init];
backgroundGradient.colors = @[
(__bridge id)CGColorCreateGenericGray(0.85, 1.0),
(__bridge id)CGColorCreateGenericGray(0.94, 1.0)
];
backgroundGradient.masksToBounds = NO;
CALayer *shadowLayer = [CALayer layer];
shadowLayer.shadowColor = CGColorCreateGenericGray(0.5, 1.0);
shadowLayer.shadowOffset = NSMakeSize(0, 0.0);
shadowLayer.shadowRadius = 10.0;
shadowLayer.shadowOpacity = 1.0;
shadowLayer.masksToBounds = NO;
[backgroundGradient addSublayer:shadowLayer];
[self setLayer:backgroundGradient];
ただし、グラデーションのみが表示されました。さらに、試してみると[self setLayer:shadowLayer]
、影が表示されます(もちろん、グラデーションは表示されません)。
グラデーションと影の両方を表示するにはどうすればよいですか?どうもありがとう!