web-dev-qa-db-ja.com

UIView:不透明対アルファ対不透明度

UIViewのopaquealphaと背景の不透明度はどのように連携し、それらの違いは何ですか?

IView http://i.minus.com/jb2IP8TXbYTxKr.png

55
Besi

opaqueは、透明であっても、下にanythingを描画しないことを意味します。

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

alphaは、ビューに描画されるすべてに影響します。


Opaqueプロパティを使用すると速度が向上します-ビューが透明になることがわかっている場合neverこれをYESに設定し、iOSがビューをレンダリングするときにパフォーマンスを最適化できますより速くレンダリングします。これがNOに設定されている場合、たとえ透明度が含まれていなくても、iOSはビューをその下のビューとブレンドする必要があります。

アルファは、背景色のアルファにも影響します。つまり、背景色が0.5透明で、アルファも0.5の場合、これは背景ビューのアルファを0.25(0.5 * 0.5)にする効果があります。

125
deanWombourne

非常に良い answer deanWombourneによると、drawRect:メソッドを使用して独自のコンテンツを描画しない限り、opaqueプロパティは効果がありません。

Appleのドキュメント

UIViewのサブクラスの不透明プロパティに値を設定する必要があるのは、独自のコンテンツを描画する drawRect:メソッドを使用します。不透明なプロパティは、UIButton、UILabel、UITableViewCellなどのシステム提供クラスでは効果がありません。など。

独自のコンテンツを描画する場合、不透明は単なるヒントであることに留意してください

このプロパティは、ビューをどのように扱うかについて、描画システムにヒントを提供します

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

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

9
Mikolaj