UIView alpha contre UIColor alpha

J'aimerais connaître la différence entre:

  • Atsortingbution à mon UIView d'une couleur avec <1 alpha vs
  • En lui atsortingbuant une couleur non transparente mais donnant à l'UIView une valeur <1 alpha.

Sur la capture d'écran, j'ai fait deux UIViews avec deux UILabels noirs (alpha = 1.0) au-dessus de chacun:

Deux UIView avec la même couleur mais 0,5 alpha sur UIView et bg. la couleur et un troisième avec alpha 1

Supposons qu'une macro _RGB est définie avant:

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

et puis voici le code ::

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

Je ne vois qu'une seule différence visuelle: la modification de l'alpha de la vue au lieu de celle de bg affecte également les sous-vues. Mais à part cela, y a-t-il une différence de fonctionnalité que je devrais considérer? (Par exemple, sur les animations, les calques, etc.)

La différence est:

  • En paramétrant la couleur d'arrière-plan avec alpha <1, seule la couleur de fond aura l'alpha et toutes les sous-vues auront par défaut alpha 1, c'est-à-dire seront 100% opaques
  • Par les parameters alpha de la vue, la vue entière (y compris toutes les sous-vues) sera dessinée avec l'alpha donné

Donc dans vos exemples:

  • _view1 (alpha <1 on view): alpha est également appliqué à la sous-vue UILabel
  • _view2 (alpha <1 sur la couleur de fond): subview UILabel est joliment opaque
  • _view3 (defualt alpha 1 sur les deux): bien, nous voyons tous 🙂 la couleur de fond et l'label sont toutes deux opaques

Exemple d'utilisation des deux:

Alpha sur fond clorAlpha sur l'ensemble de la vue

Image de gauche : vous disposez d'une superposition noire semi-transparente avec une sous-vue UIImageView contenant une icône de coche blanche et vous souhaitez généralement que l'icône soit totalement opaque (non transparente). Donc, vous définissez seulement la couleur de fond noire avec alpha <1 (0,75f dans l'exemple).

En s'opposant à:

Image de droite : Vous avez une superposition noire semi-transparente qui a une sous-vue UIImageView contenant une image de motif blanche (le motif est blanc opaque, pas d'alpha). Et vous voulez que le motif en superposition soit également semi-transparent. Vous devez ensuite définir la couleur d'arrière-plan au noir avec alpha 1 (opaque) et alpha <1 à l'set de la vue.

Comme vous pouvez le voir, l'icône sur l'image de gauche est complètement opaque, mais sur la droite, vous pouvez voir aussi à travers un motif d'écanvass.