Múltiples sombras en una sola vista iOS

Estoy buscando para agregar varias sombras con diferentes opacidades a una vista. Las especificaciones para las sombras son las siguientes:

  • Desplazamiento en Y de 4 con radio de desenfoque de 1
  • Desviación Y de 10 con radio de desenfoque de 10
  • Desviación Y de 2 con radio de desenfoque de 4
  • El radio de desenfoque de 1, propagación de 1 (sin desplazamientos, probablemente tendrá que ser de 4 sombras diferentes)

Puedo hacer que todo esto funcione bien usando CALayer s. Aquí está el código para el que estoy trabajando (tenga en count que no me he molestado en configurar shadowPath todavía, y no lo haré hasta que consiga el funcionamiento de las sombras múltiples):

 layer.cornerRadius = 4 layer.masksToBounds = false layer.shouldRasterize = true let layer2 = CALayer(layer: layer), layer3 = CALayer(layer: layer), layer4 = CALayer(layer: layer) layer.shadowOffset = CGSizeMake(0, 4) layer.shadowRadius = 1 layer2.shadowOffset = CGSizeMake(0, 10) layer2.shadowRadius = 10 layer2.shadowColor = UIColor.blackColor().CGColor layer2.shouldRasterize = true //Evidently not copied during initialization from self.layer layer3.shadowOffset = CGSizeMake(0, 2) layer3.shadowRadius = 4 layer3.shouldRasterize = true layer4.shadowOffset = CGSizeMake(0, 1) layer4.shadowRadius = 1 layer4.shadowOpacity = 0.1 layer4.shouldRasterize = true layer.addSublayer(layer2) layer.addSublayer(layer3) layer.addSublayer(layer4) 

(Si bien este código está en Swift, confío en que le parezca lo suficientemente familiar a la mayoría de los desarrolladores de Cocoa / Objective-C para que tenga sentido. Solo sepa que esa layer es equivalente a self.layer en este context).

El problema, sin embargo, surge cuando bash usar diferentes opacidades para cada sombra. La propiedad shadowOpacity de la layer termina aplicándose a todas sus subcapas. Este es un problema, ya que necesito que todos tengan su propia opacidad en la sombra. He intentado configurar la opacidad de sombra de cada capa en su valor correcto ( 0.04 , 0.12 , etc.), pero luego se aplica la opacidad de 0.04 de layer a todas las subcapas. Así que traté de establecer layer.shadowOpacity en 1.0 , pero esto hizo que todas las sombras layer.shadowOpacity negras. También traté de ser inteligente y hacer layer2.shadowColor = UIColor(networking: 0, green: 0, blue: 0, alpha: 0.12).CGColor , pero se cambió a negro completo sin transparencia.

Supongo que tiene algún sentido que todas las capas tengan la misma opacidad de la sombra. Pero, ¿cuál es la forma de conseguir este funcionamiento, las diferentes opacidades y todo (no es necesario utilizar CALayer si es más fácil de otra manera)?

Por favor, no responda con "solo use una image" : no importa cuán sano sea, estoy tratando de evitarlo. Solo humor yo

Gracias.

EDITAR: según lo solicite, esto es lo que busco: Gol .