¿Cómo convertir el canal alfa de UIImage / CGImageRef en máscara?

¿Cómo puedo extraer el canal alfa de un UIImage o CGImageRef y convertirlo en una máscara que pueda usar con CGImageMaskCreate?

Por ejemplo

Esencialmente, dada cualquier imagen, no me importan los colores dentro de la imagen. Todo lo que quiero es crear una imagen en escala de grises que represente el canal alfa. Esta imagen se puede usar para enmascarar otras imágenes.

Un ejemplo de comportamiento de esto está en el UIBarButtonItem cuando le proporciona una imagen de icono. Según los documentos de Apple, dice:

Las imágenes que se muestran en la barra se derivan de esta imagen. Si esta imagen es demasiado grande para caber en la barra, se escala para ajustarse. Por lo general, el tamaño de una barra de herramientas y la imagen de la barra de navegación es de 20 x 20 puntos. Los valores alfa en la imagen de origen se utilizan para crear las imágenes; los valores opacos se ignoran.

The UIBarButtonItem toma cualquier imagen y mira solo el alfa, no los colores de la imagen.

Respuestas a la pregunta(3)

Su respuesta a la pregunta