2011-12-15 15 views

答えて

114

opaque手段は、あなたが透明であっても、下を描画しません。

背景色のアルファは、背景色の透明度にのみ影響し、他の色はビューに描画されません。

alphaは、すべてのビューに描画されます。


不透明なプロパティは、あなたの速度増加を与えることができます - あなたはあなたのビューが決してあなたはYESにこれを設定することができ、iOSのは、あなたのビューをレンダリングするとき、それはいくつかのパフォーマンスの最適化を行い、それをレンダリングすることができ、透明性を持っていることを知っていればもっと早く。これがNOに設定されている場合、iOSは透過性を含んでいない場合でも、ビューを下のビューとブレンドする必要があります。

アルファはバックグラウンドカラーのアルファにも影響します。つまり、背景色が0.5透明でアルファも0.5の場合、バックグラウンドビューのアルファ0.25(0.5 * 0.5)になります。

+0

+1非常に良い説明。ありがとう – Besi

+2

私はあなたがバックグラウンドカラーのアルファが0.25であり、バックグラウンドビューではないと思います。背景色と背景色は2つの異なるものだと思います。 – Philip007

+0

私が言っている 'UIView'の' backgroundColor'プロパティのアルファ成分を意味します:)私はネストされたビューについて全く話していません! – deanWombourne

4

deanWombourneによって非常に良いanswerに追加する価値があります。drawRect:メソッドを使用して独自のコンテンツを描画しない限り、不透明なプロパティは無効です。

Apple's doc:方法:

あなただけはのdrawRectを使用して、独自のコンテンツを描くこと のUIViewのサブクラスで不透明なプロパティの値を設定する必要があります。 の不透明なプロパティは、システム提供のクラスには影響しません。 UIButton、UILabel、UITableViewCellなど。

独自のコンテンツを描画する場合は、覚えておいて、その不透明なだけのヒント

でこのプロパティは、それ が扱うべき方法についての描画システムにヒントを提供しますビュー。

と同じAppleのドキュメントからいくつかの詳細なガイドライン:

ビューが不透明で、どちらかの境界を満たしていないか、完全に、または部分的に透明なコンテンツを が含まれている場合、結果は予測でき です。ビューが完全または部分的に透過的な場合は、常にこのプロパティの値をNO に設定する必要があります。

関連する問題