2012-07-20 84 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