¿Cómo oscurecer un CALayer transparente de forma irregular en el iPhone?

Estoy poniendo una image en un CALayer que podría ser irregularmente transparente:

theCardLayer.front = [CALayer layer]; theCardLayer.front.contents = (id)[cardDrawing CGImage]; 

En otras palabras, puede ser un cuadrado que llena la capa o puede ser un octágono que sale de las esquinas.

A veces quiero oscurecer esta capa, pero sin oscurecer los bits transparentes. ¿Alguna sugerencia sobre cómo hacerlo de forma programática?

Echa un vistazo a CGBlendMode ; una mezcla múltiple, hecha creando un nuevo CGBitmapContext , dibujando la image y luego un relleno gris, y asignando la image resultante a tu capa, debería funcionar bien.

Puedes usar un CGShapeLayer . Establezca su ruta a la forma que desea dibujar. También puedes usar capas de forms como máscaras para otras capas, si eso es lo que quieres.