web-dev-qa-db-ja.com

UIViewアルファとUIColorアルファ

違いを知りたいのですが:

  • UIViewにアルファが1未満の色を割り当てるvs
  • 不透明な色を割り当てますが、UIViewに1未満のアルファ値を与えます。

スクリーンショットでは、それぞれの上に2つの黒い(アルファ= 1.0)UILabelを持つ2つのUIViewを作成しました。

Two UIView's with same color but 0.5 alpha on UIView and bg. color and a third one with alpha 1

マクロ_RGBが前に定義されていると仮定します。

#define _RGB(r,g,b,a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]

そしてここにコードがあります::

[_view1 setBackgroundColor:_RGB(255, 0, 0, 1)];
[_view1 setAlpha:0.5];

[_view2 setBackgroundColor:_RGB(255, 0, 0, 0.5)];
[_view2 setAlpha:1];

[_view3 setBackgroundColor:_RGB(255, 0, 0, 1)];
[_view3 setAlpha:1];

視覚的に見える違いは1つだけです。bgカラーではなくビュー自体のアルファを変更すると、サブビューにも影響します。しかし、それ以外に私が考慮すべき機能の違いはありますか? (例:アニメーション、レイヤーなど)

17

違いは次のとおりです。

  • 背景色をアルファ<1に設定すると、背景色のみがアルファになり、すべてのサブビューはデフォルトでアルファ1になります。つまり、100%不透明になります。
  • ビューにアルファを設定することにより、ビュー全体(すべてのサブビューを含む)が指定されたアルファで描画されます

だからあなたの例では:

  • _view1(ビューではアルファ<1):アルファはサブビューUILabelにも適用されます
  • _view2(背景色のアルファ<1):サブビューUILabelは非常に不透明です
  • _view3(両方にデフォルトのアルファ1):ええと、私たちは皆見ます:-)背景色とラベルは両方とも不透明です

両方の使用例:

Alpha on background clorAlpha on whole view

左の画像:白いチェックマークアイコンを含むサブビューUIImageViewを持つ半透明の黒いオーバーレイがあり、通常はアイコンを完全に不透明(不透明)にする必要があります。したがって、アルファ<1(例では0.75f)の背景色だけを黒に設定します。

反対に:

右の画像:白いパターン画像を含むサブビューUIImageViewを持つ半透明の黒いオーバーレイがあります(パターンは不透明な白で、アルファはありません)。また、オーバーレイのパターンも半透明にする必要があります。次に、背景色を黒に設定し、ビュー全体にアルファ1(不透明)およびアルファ<1を設定します。

ご覧のとおり、左側の画像のアイコンは完全に不透明ですが、右側のアイコンは星のパターンを通しても見ることができます。

22
Lukas Kukacka