J'aimerais connaître la différence entre:
Sur la capture d'écran, j'ai fait deux UIViews avec deux UILabels noirs (alpha = 1.0) au-dessus de chacun:
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:
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:
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.