2013-06-02 34 views
1

我是Obj-C開發的新手,目前我一直陷在一個簡單的問題中。我試圖創建一個NSView和添加邊框和陰影,我有這樣的代碼:maskToBounds設置爲NO似乎不起作用

_view.wantsLayer = YES; 
CALayer *layer = _view.layer; 

layer.masksToBounds = NO; 
layer.borderWidth = 2; 
layer.shadowColor = [[NSColor blackColor] CGColor]; 
layer.shadowOffset = CGSizeMake(2, -2); 
layer.shadowOpacity = 1; 
layer.shadowRadius = 6; 

顯然,這應該工作,因爲我已經設置maskToBoundsNO,但我不能得到更好的東西比這

freaking shadow

看到了嗎?陰影不能離開盒子。我錯過了什麼?我已經檢查了許多有關這個問題的主題,但我找不到解決此問題的任何問題...

+0

您確定您的父視圖的邊界足夠大以顯示最初的陰影嗎? –

+0

對不起這個愚蠢的問題,但是:我該如何檢查?父視圖是窗口視圖,這裏是屬性:http://i.imgur.com/jOuwoMs.png – Nesk

回答

2

問題是,託管視圖會將圖層剪輯到邊界。

你可以嘗試啓用層襯上它的超級觀點:

[_view superview].wantsLayer = YES; 
CALayer *layer = _view.layer; 

layer.masksToBounds = NO; 
layer.borderWidth = 2; 
layer.shadowColor = [[NSColor blackColor] CGColor]; 
layer.shadowOffset = CGSizeMake(2, -2); 
layer.shadowOpacity = 1; 
layer.shadowRadius = 6; 

鑑於上海華足夠大,這也應該借鑑的是位於視圖範圍之外的核心動畫層的部分。

enter image description here

+0

這解決了我的問題,謝謝你的幫助! – Nesk

+0

偉大的工作。 如果答案解決了您的問題,請檢查接受我的答案。 (使用投票按鈕下面的綠色複選標記) –