2011-08-24 12 views
8

ボタンからプログラムでシャドーを作成する標準的な方法を使用していますが、ボタンを使ってシャドーを終了した後はシャドウしません。私は不透明度を0に設定することができましたが、影がまだ存在していれば、システムには依然として課税されます。おかげiPhoneでシャドウを削除するにはどうすればいいですか?

これはエラー

tempButton.superview.layer.shadowOffset = nil; 
    tempButton.superview.layer.shadowRadius = nil; 
    tempButton.superview.layer.shadowOpacity = nil; 
+0

[iOSのビューを追加/削除する]の複製が可能です(http://stackoverflow.com/questions/16751163/ios-add-remove-shadow-from-a-view) – Fattie

答えて

26

私は通常以下のことをして安全です。

[[tempButton layer] setShadowOpacity:0.0]; 
    [[tempButton layer] setShadowRadius:0.0]; 
    [[tempButton layer] setShadowColor:nil]; 

クォーツは高度に最適化されており、必要がない場合は時間を無駄にしません。

+0

+1 '[[tempButton layer] setShadowColor:nil];'は本当に安全です。ドキュメントでは、デフォルトは不透明な黒ですが、nilがどのように処理されるかは規定されていません(また、文書化されていない動作に依存することは決して安全ではありません)。個人的に私はそれをスキップします。 – Clafou

+0

'nil'は正常に動作しているようですが、安全に再生したい場合は、[UIColor clearColor] .CGColorで行ってください。それもうまく動作し、安全です。 – Joel

1

私はちょうどボタンを削除し、ボタンと同じ(ただし、非陰に)でそれに代わるになります。または、その両方を保持し、それらの1つを非表示/非表示にします。新しいUIオブジェクトを作成する方が、既存のUIオブジェクトを作成する方が簡単な場合もあります。

関連する問題