UIView alpha против UIColor alpha

Я хотел бы знать разницу между:

  • Назначение моего UIView цвета с < 1 alpha vs
  • Назначение этого непрозрачного цвета, но значение UIView равно < 1 альфа.

На скриншоте я сделал два UIView с двумя черными (альфа = 1.0) UILabels поверх каждого:

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];

Я вижу только одно различие визуально: изменение вида собственной альфы, а не bg color, также влияет на subviews. Но кроме этого есть разница в функциональности, которую я должен учитывать? (например, анимации, слои и т.д.)

Ответы

Ответ 1

Разница заключается в следующем:

  • По умолчанию цвет фона с альфой 1, только цвет фона будет иметь альфа, и все подпункты по умолчанию будут иметь альфа-1, то есть будут на 100% непрозрачными.
  • По настройкам alpha в представлении весь вид (включая все подпункты) будет рисоваться с помощью данной альфа

Итак, в ваших примерах:

  • _view1 (alpha < 1 on view): alpha также применяется к subview UILabel
  • _view2 (alpha < 1 на цвет фона): subview UILabel красиво непрозрачен.
  • _view3 (defualt alpha 1 на обоих): ну, мы все видим:-) цвет фона и метка оба непрозрачны

Пример использования обоих:

Alpha on background clorAlpha on whole view

Левое изображение. У вас есть полупрозрачный черный оверлей, у которого есть subview UIImageView, содержащий белый значок галочки, и вы обычно хотите, чтобы значок был полностью непрозрачным (непрозрачным). Таким образом, вы устанавливаете только черный цвет фона с альфой < 1 (0,75f в примере).

В противоположность:

Правое изображение. У вас есть и полупрозрачная черная накладка, у которой есть subview UIImageView, содержащее изображение с белым рисунком (шаблон непрозрачный белый, без альфы). И вы хотите, чтобы шаблон в наложении был также полупрозрачным. Затем вы установите цвет фона на черный с альфа-1 (непрозрачный) и альфа-1 на весь вид.

Как вы можете видеть, значок на левом изображении полностью непрозрачен, но справа вы можете видеть также через шаблон звезд.