UIViewのopaque
alpha
と背景の不透明度はどのように連携し、それらの違いは何ですか?
opaque
は、透明であっても、下にanythingを描画しないことを意味します。
背景色のアルファは、背景色の透明度にのみ影響し、ビューに描画される他のものには影響しません。
alpha
は、ビューに描画されるすべてに影響します。
Opaqueプロパティを使用すると速度が向上します-ビューが透明になることがわかっている場合neverこれをYES
に設定し、iOSがビューをレンダリングするときにパフォーマンスを最適化できますより速くレンダリングします。これがNO
に設定されている場合、たとえ透明度が含まれていなくても、iOSはビューをその下のビューとブレンドする必要があります。
アルファは、背景色のアルファにも影響します。つまり、背景色が0.5透明で、アルファも0.5の場合、これは背景ビューのアルファを0.25(0.5 * 0.5)にする効果があります。
非常に良い answer deanWombourneによると、drawRect:メソッドを使用して独自のコンテンツを描画しない限り、opaqueプロパティは効果がありません。
UIViewのサブクラスの不透明プロパティに値を設定する必要があるのは、独自のコンテンツを描画する drawRect:メソッドを使用します。不透明なプロパティは、UIButton、UILabel、UITableViewCellなどのシステム提供クラスでは効果がありません。など。
独自のコンテンツを描画する場合、不透明は単なるヒントであることに留意してください
このプロパティは、ビューをどのように扱うかについて、描画システムにヒントを提供します。
同じAppleのドキュメントからのいくつかのガイドライン:
ビューが不透明で、境界を満たさないか、完全または部分的に透明なコンテンツが含まれている場合、結果は予測できません。ビューが完全または部分的に透明である場合、このプロパティの値を常にNOに設定する必要があります。