xyz hexadecimal from convert color ios objective-c uiview transparency alpha

hexadecimal - uicolor ios



UIView alpha vs. UIColor alpha (1)

La diferencia es:

  • Al configurar el color de fondo con alfa <1, solo el color de fondo tendrá el alfa y todas las subvistas tendrán por defecto alfa 1, es decir, será 100% opaco
  • Mediante la configuración alfa a la vista, toda la vista (incluidas todas las subvistas) se dibujará con el alfa dado

Entonces en tus ejemplos:

  • _view1 (alpha <1 en la vista): alpha también se aplica a la subvista UILabel
  • _view2 (alfa <1 en color de fondo): subvista UILabel es muy opaca
  • _view3 ( _view3 alpha 1 en ambos): bueno, todos vemos :-) el color de fondo y la etiqueta son ambos opacos

Ejemplo de uso de ambos:

Imagen izquierda : tiene una superposición negra semitransparente que tiene una subvista UIImageView contiene un icono de marca blanca y generalmente desea que el icono sea completamente opaco (no transparente). Así que establece el color de fondo negro con alfa <1 (0.75f ​​en el ejemplo).

En oposición a:

Imagen derecha : tiene una superposición negra semitransparente y tiene una subvista UIImageView contiene una imagen de patrón blanco (el patrón es blanco opaco, no alfa). Y desea que el patrón en superposición sea también semitransparente. Luego establecería el color de fondo en negro con alfa 1 (opaco) y alfa <1 en toda la vista.

Como puede ver, el ícono en la imagen de la izquierda es completamente opaco, pero a la derecha, puede ver también a través de un patrón de estrellas.

Me gustaría saber la diferencia entre:

  • Asignar mi UIView un color con <1 alpha vs
  • Asignarle un color no transparente pero dando a UIView un valor de <1 alpha.

En la captura de pantalla, hice dos UIViews con dos UILabels negras (alfa = 1.0) encima de cada una:

Supongamos que una macro _RGB se define antes:

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

y luego aquí está el código ::

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

Solo puedo ver una diferencia visualmente: cambiar el propio alfa de la vista en lugar del color de bg también afecta las subvistas. Pero aparte de eso, ¿hay alguna diferencia en la funcionalidad que deba considerar? (por ejemplo, en animaciones, capas, etc.)