2013-05-25 7 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

CALayerというプロパティを使用することができます。

だから、これは動作するはずです:

self.layer.shadowOpacity = 0.0; 

CALayer's shadowOpacity documentation page

を参照してください。そして、あなたの影の使用を表示するには:

self.layer.shadowOpacity = 1.0; 
+0

ありがとう非常に便利私はこのオプションを検討していないが、パフォーマンスの変更にこのプロパティのターゲットを変更してから間違いなく削除しようとする可能性がありますか? –

6

正しい道申し訳ありませんが、確かではないが、あなたを持っているがlayer shadowのプロパティを変更しようとしましたか?例えば、これらの1つ。

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

あなたが隠し作ろうとしている「層」は、目に見える側面あなたがそれに影を持っているオブジェクトの層ではないです..です層に...それはかなりだとオブジェクトのみとにかく概念化するのを混乱させる唯一の方法は、上で示唆した元のものを元に戻すことです。ブールをトグルして影を消すことができるプロパティはありません。