您好我的应用程序我有一个CALayer的自定义视图(我用它来过渡动画),在该视图中我添加了一些子视图,其中一个是NSTableView的视图。 NSTableView的每个单元格都用阴影绘制内容。像这样的代码:
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在CALayer打开时少于约50行或当我在IB中关闭CALayer时,我的单元格被绘制为:http://i.stack.imgur.com/zMxmK.png
但是当我的NSTableView有超过50行且我在IB中打开CALayer时,我的单元格被绘制成:http://i.stack.imgur.com/IMyIP.png
怎么可能?我打破了我的意思:(
答案 0 :(得分:1)
-2.0
更改为+2.0
,具体取决于[[NSGraphicsContext currentContext] isFlipped]
属性。isGeometryFlipped
来更改它。如果您已应用翻转转换,请注意它们不会影响NSShadow:
无论应用于该空间的任何变换如何,都始终在默认用户坐标空间中绘制阴影。这意味着当前变换矩阵(CTM)的旋转,平移和其他变换不会影响生成的阴影。另一种思考方式是CTM的变化不会移动或改变阴影光源的视在位置。