2012-07-20 71 views
1

嗨在我的应用程序中,我有一个CALayer自定义视图(我用它为过渡动画),在该视图中我添加了一些子视图,其中之一是与NSTableView视图。 NSTableView的每个单元格都会用阴影绘制内容。像这样的代码:NSShadow绘图问题

NSShadow* shadow = [[NSShadow alloc] init]; 
[shadow setShadowOffset:NSMakeSize(2.0, -2.0)]; 
[shadow setShadowBlurRadius:2.0]; 
[shadow setShadowColor:[[NSColor blackColor] colorWithAlphaComponent:0.3]]; 
[shadow set]; 

[self.stringValue drawInRect:NSMakeRect(x, y, w - 60, h) withAttributes:attributes]; 

当我NSTableView的具有小于〜50行与CALayer的开启或当我在IB关闭的CALayer,我得出这样的细胞:http://i.stack.imgur.com/zMxmK.png

但是当我NSTableView的有超过〜50行,我打开IB中的CALayer,我有像这样的单元格:http://i.stack.imgur.com/IMyIP.png

它怎么可能?我打破我有:(

回答

1
  • 尝试改变-2.0+2.0取决于[[NSGraphicsContext currentContext] isFlipped]财产。
  • 试试吧取决于视图是否是分层和CALayer的对isGeometryFlipped改变。
  • 如果你已经翻转转型(s)应用,请注意它们不会影响NSShadow:

    阴影总是绘制在默认的用户坐标空间中,而不管应用于t的任何转换帽子空间。这意味着当前转换矩阵(CTM)的旋转,平移和其他转换不会影响结果阴影。另一种考虑这种情况的方式是CTM的变化不会移动或改变阴影光源的明显位置。

+0

谢谢您的回答。 1. GraphicsContex总是为我翻转。 2. CALayer几何不翻转。 3.我没有应用转换。这是一个奇怪的错误:( – Vespen 2012-07-21 02:37:36