He diseñado elementos de la interfaz de usuario en el boceto, y uno de ellos tiene una sombra con desenfoque 1 y propagación 0. Busqué en el documento la propiedad de la capa de vistas y la capa no tiene nada llamado propagación o desenfoque, ni nada equivalente (el único control era simplemente shadowOpacity) ¿Cómo se pueden controlar cosas como el desenfoque y la propagación?
EDITAR:
Aquí están mis configuraciones en Sketch:
Y así es como quiero que se vea mi sombra:
Y así es como se ve en este momento: Tenga en cuenta que debe hacer clic en la imagen para ver la sombra.
Mi código es el siguiente:
func setupLayer(){
view.layer.cornerRadius = 2
view.layer.shadowColor = Colors.Shadow.CGColor
view.layer.shadowOffset = CGSize(width: 0, height: 1)
view.layer.shadowOpacity = 0.9
view.layer.shadowRadius = 5
}
ios
swift
uiview
core-graphics
Quantaliinuxita
fuente
fuente
Respuestas:
A continuación, se explica cómo aplicar las 6 propiedades de sombra de Sketch a una capa de UIView con una precisión casi perfecta:
Digamos que queremos representar lo siguiente:
Puede hacer esto fácilmente a través de:
o más sucintamente:
Ejemplo:
Nota:
spread
, codifica una ruta basada en elbounds
de CALayer. Si los límites de la capa alguna vez cambian, querrá volver a llamar alapplySketchShadow()
método.fuente
maskToBounds = false
.maskToBounds = false
. Un ejemplo en el que fallará es al aplicar esta sombra a unUIButton
.shadowRadius = blur / UIScreen.main.scale
en contraposición a la codificación fijablur / 2.0
? ¿O hay otra razón para dividir por 2? @matchifang ¿Descubriste esto?Puedes probar esto ... puedes jugar con los valores. El
shadowRadius
dicta la cantidad de desenfoque.shadowOffset
dicta a dónde va la sombra.fuente
Sombra de boceto con IBDesignable e IBInspectable en Swift 4
fuente
layer.shadowRadius * 2
para shadowBlur getter?Este código funcionó muy bien para mí:
fuente
Para aquellos que intentan aplicar una sombra a una ruta predefinida (como para una vista circular, por ejemplo), esto es lo que terminé con:
Publicaré algunos ejemplos más adelante, pero esto me ha funcionado perfectamente para las vistas circulares.
fuente
1
conx
yy
0
shapeLayer.applyShadow(color: .black, alpha: 1, x: 0, y: 0, blur: 0, spread: 1, path: path)
. En este caso, la sombra tiene un desplazamiento, mientras que no debería. Aquí el triángulo debe tener la 1px sombra se extendió en todas las direcciones ibb.co/YjwRb9BMi solución basada en esta publicación responde: (Swift 3)
fuente
Realmente me gusta la respuesta publicada aquí y las sugerencias en los comentarios. Así es como modifiqué esa solución:
USO:
fuente
Puede ser un poco de excavación en la historia, pero tal vez algunos tuvieron el mismo problema. Usé una muestra de código de la respuesta aceptada. Sin embargo, los efectos son bastante diferentes: - el valor y tiene que ser aproximadamente la mitad en comparación con el mismo valor en el boceto - Traté de aplicar sombra en la barra de navegación y el efecto es terriblemente diferente - apenas visible al usar los mismos valores que tenía el boceto.
Entonces parece que el método no refleja en absoluto los parámetros del boceto. ¿Alguna pista?
fuente