2013-05-25 29 views
7

我不明白如何刪除添加到視圖中的陰影。 我添加到我的觀點在initWithFrame陰影中這樣說:iOS從視圖中添加/刪除陰影

self.layer.borderWidth = 2; 
self.layer.borderColor = [UIColor clearColor].CGColor; 
self.backgroundColor = [UIColor greenColor]; 
[self.layer setCornerRadius:8.0f]; 
CALayer *layer = self.layer; 
layer.shadowOffset = CGSizeMake(2, 2); 
layer.shadowColor = [[UIColor blackColor] CGColor]; 
layer.cornerRadius = 8.0f; 
layer.shadowRadius = 3.0f; 
layer.shadowOpacity = 0.80f; 
layer.shadowPath = [[UIBezierPath bezierPathWithRect:layer.bounds] CGPath]; 

後在應用程序的執行我想從該視圖中刪除的影子。我已經嘗試使用:

layer.hidden = YES; 

self.layer.hidden = YES; 

但這完全隱藏的觀點,而不僅僅是添加陰影。

有沒有辦法從視圖中檢索添加的陰影,然後隱藏它? 謝謝!

+2

是否有原因你在代碼的中間聲明瞭一個指向'self.layer'的本地'layer'變量? –

+0

我讀過這可能是更好的性能原因聲明與UIBezierPath的shadowPath,不是嗎?有最佳做法來做到這一點? –

回答

17

我想你可以使用你的CALayershadowOpacity財產。

所以這應該工作:

self.layer.shadowOpacity = 0.0; 

CALayer's shadowOpacity documentation page

,並顯示出你的影子用途:

self.layer.shadowOpacity = 1.0; 
+0

謝謝非常有用我不考慮這個選項,但可能會影響性能改變這個屬性目標,然後嘗試絕對刪除? –

6

對不起,不知道正確方式,但你嘗試更改layer shadow的屬性?例如,其中之一;

layer.shadowOffset = CGSizeMake(0, 0); 
layer.shadowColor = [[UIColor clearColor] CGColor]; 
layer.cornerRadius = 0.0f; 
layer.shadowRadius = 0.0f; 
layer.shadowOpacity = 0.00f; 
0

的「層」,你正試圖使隱藏的是你有一個陰影,它的對象的層不是一個可見的方面。只有在該層......這是相當的對象混淆概念化無論如何,去除陰影的唯一方法是撤消你最初做的,這是上面建議的,沒有定義的屬性,你可以切換一個布爾,使陰影消失