2011-02-28 38 views
2

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

下面的代码:

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的?

谢谢,马克。

编辑:我也试过上面的代码与负Y偏移量,相同的结果,阴影是在图像上方。

+0

你是否在某处设置了不透明度? – jkyle 2011-07-30 02:17:21

回答

1

尝试将偏移量Y设置为负数(10,-10)。您不会指出这是Mac还是iPhone,但您可能会对UIKit,AppKit,CoreGraphics和CoreAnimation的不同部分具有不同坐标系的事实感到惊讶。确保你知道哪个方向是“向上”。

+0

即使点数为10,-10也是同样的问题。顺便说一下,这是一款Mac应用程序。 – Mark 2011-02-28 17:22:04