CALayer在内容图像上绘制阴影

时间:2011-02-28 16:24:14

标签: core-animation calayer shadow

我有一个CALayer实例,我已将其设置为png文件作为内容。设置各种阴影属性后,阴影将在图像上方/上方绘制,而不是在图像上方。

以下是代码:

CALayer *boardLayer = [CALayer layer];
boardLayer.frame = CGRectMake(self.layer.frame.origin.x, 
  self.layer.frame.origin.y, self.layer.frame.size.width, BOARD_HEIGHT);

boardLayer.shadowColor = CGColorCreateGenericRGB(100.0, 100.0, 0.0, 1.0);
boardLayer.shadowOffset = CGSizeMake(10, 10);
boardLayer.shadowOpacity = 0.99f;
boardLayer.shadowRadius = 5.0f;
boardLayer.contents = (id)[self imageToImageRef:[NSImage imageNamed:@"board.png"] 
                                   withMaxWidth: 0
                                   andMaxHeight: 0];
boardLayer.contentsGravity = kCAGravityResize;

boardLayer.masksToBounds = NO;

在屏幕截图中,您可以看到黄色阴影位于内容之上:

enter image description here

在设置CALayer时是否还有一些问题?

谢谢,Mark。

编辑:我也尝试了上面的代码,负Y偏移,同样的结果,阴影在图像上方。

1 个答案:

答案 0 :(得分:1)

尝试将偏移的Y设置为负(10,-10)。你没有说明这是Mac还是iPhone,但你可能会对UIKit,AppKit,CoreGraphics和CoreAnimation的不同部分有不同的坐标系这一事实感到惊讶。确保你知道哪种方式“起来。”