Un CAShapeLayer utiliza un CGPathRef para dibujar sus cosas. Así que tengo un camino de estrella, y quiero una sombra suave con un radio de alrededor de 15 unidades. Probablemente haya alguna funcionalidad agradable en algunas versiones nuevas de iPhone OS, pero necesito hacerlo yo mismo para una versión antigua de 3.0 (que la mayoría de la gente aún usa).Cómo dibujar sombras desplegables en iOS
Intenté hacer algunas cosas realmente desagradables: Creé un bucle forzado y se creó secuencialmente como 15 de esas rutas, transformándolas paso a paso para aumentar su tamaño. Luego, asignarlos a un nuevo CAShapeLayer creado y disminuir su alfa un poco en cada iteración. No solo que esta escala es matemáticamente incorrecta y es una mierda (¡debería ocurrir en relación con el contorno!), La sombra no es redondeada y se ve realmente fea. Es por eso que las bonitas sombras suaves tienen un radio.
Las puntas de una estrella no deben aparecer totalmente nítidas después de un tamaño de sombra de 15 unidades. Deben ser suaves como la crema. Pero en mi fea solución son tan simples como la estrella en sí misma, ya que lo único que hago es escalar la estrella 15 veces y disminuirla en alfa 15 veces. Feo.
Me pregunto cómo lo hacen los chicos grandes? Si tenía una ruta arbitraria, y esa ruta debe arrojar una sombra, ¿cómo funciona el algoritmo para hacerlo? Probablemente, la ruta tendría que expandirse 30 veces, punto por punto, en relación con la tangente del contorno, lejos de la parte rellena, y con solo 0,5 unidades para obtener una buena combinación.
Antes de reinventar la rueda, ¿alguien tiene un ejemplo útil o un enlace?
Para CGContextSetShadow, el segundo parámetro debe ser un CGSize, como en CGSizeMake (5,5) –