Tengo un UIImageView que quiero agregar una sombra detrás. Desearía que Apple tuviera eso como una propiedad, pero tienen que hacer muchas cosas difíciles para los programadores, así que tengo que hacer esta pregunta.¿Cuál es la mejor manera de crear una sombra detrás de un UIImageView
Respuesta
Hay una manera mejor y más fácil de hacer esta. UIImageView hereda de UIView para que tenga una propiedad de capa. Puedes acceder a las propiedades de sombra de la capa y bam, tienes una sombra.
Si tiene el UIImageView como un IBOutlet en un archivo de punta, puede implementar el awakeFromNib por ejemplo.
Objective-C
- (void)awakeFromNib {
imageView.layer.shadowColor = [UIColor purpleColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;
imageView.clipsToBounds = NO;
}
No se olvide de #import "QuartzCore/CALayer.h"
Para Swift, que puede ir sobre él de varias maneras. Cree una extensión de clase, una subclase o una instancia de imageView. Cualquiera que sea el camino, el proceso es el mismo al modificar la propiedad de sombra de las capas.
Swift 3
override func awakeFromNib() {
super.awakeFromNib()
imageView.layer.shadowColor = UIColor.purple.cgColor
imageView.layer.shadowOffset = CGSize(width: 0, height: 1)
imageView.layer.shadowOpacity = 1
imageView.layer.shadowRadius = 1.0
imageView.clipsToBounds = false
}
Lo más sencillo que hacer es añadir una capa de sombra a su vista de la imagen:
CALayer *layer = [CALayer layer];
CGRect bounds = self.bounds;
layer.bounds = bounds;
layer.position = CGPointMake(bounds.size.width/2 + 3, bounds.size.height/2 + 3);
layer.backgroundColor = [UIColor colorWithWhite: 0.25 alpha: 0.55].CGColor;
layer.zPosition = -5;
[self.layer addSublayer: layer];
Asegúrese "Clip subvistas" está desactivado para la vista
¿por qué haces un CGRect * límites cuando puedes simplemente establecer los límites de la capa en self.bounds? ¿Y dónde entra la sombra? – Jaba
Creo una variable de temperatura para legibilidad; tipear self.bounds es un poco más largo que los límites, y hace que el código sea un poco menos legible. Esta capa ES la sombra. Por supuesto, esto presupone que tienes una imagen cuadrada; si está haciendo una imagen no rectangular, tendrá que usar una máscara de imagen personalizada. –
Bueno, quiero que se desvanezca y no sé cómo lo haría. ¡Ayuda! – Jaba
en adicional para que, si se desea realizar borde blanco y la sombra puede utilizar ese código:
//shadow part
imageView.layer.shadowColor = [UIColor blackColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;
//white border part
[imageView.layer setBorderColor: [[UIColor whiteColor] CGColor]];
[imageView.layer setBorderWidth: 2.0];
Pero en este caso, ¿cómo se puede hacer que la sombra forme parte de la propiedad .image, por ejemplo, guardar o mostrar esa imagen en otro lugar? – alejandrormz
No puedes. No está editando la imagen, la está adornando para mostrarla. Editar realmente los datos del mapa de bits es * mucho * más complicado. Considere simplemente adornar la imagen en cualquier lugar que la muestre, ya que generalmente no desea procesar imágenes para agregar este tipo de efectos, a menos que lo haga en un back-end que los procesa en lotes. – Tim
UIView establece shadowlayer
y addSubview: su imageView
¿Puede profundizar en eso? ¡Gracias! –
Swift solution con extensión La subclasificación no es obligatoria. Llame al myImage.addShadow()
desde viewDidLoad()
. Esto debería funcionar para UIView
y UIImageView
.
extension UIView {
func addShadow() {
layer.shadowColor = UIColor.black.cgColor
layer.shadowOffset = CGSize(width: 0, height: 0)
layer.shadowOpacity = 0.5
layer.shadowRadius = 5
clipsToBounds = false
}
}
- 1. ¿Cuál es la mejor manera de crear consultas complejas RESTful?
- 2. ¿Cuál es la mejor manera de perfilar una aplicación Sinatra?
- 3. ¿Cuál es la mejor manera de determinar un bucle invariante?
- 4. ¿Cuál es la mejor manera de crear una página de inicio de sesión de PHP?
- 5. ¿La mejor manera de hacer este tipo de sombra paralela?
- 6. CSS: ¿Cuál es la mejor manera de crear una grilla de Sudoku de 9x9?
- 7. Cuál es la mejor manera de autorizar una llave USB
- 8. ¿Cuál es la mejor manera de declarar una variable global?
- 9. ¿Cuál es la mejor manera de crear un espacio de nombres de JavaScript?
- 10. ¿Cuál es la mejor manera de construir una NSCompoundPredicate compleja?
- 11. ¿Cuál es la mejor manera de analizar una gramática simple?
- 12. ¿Cuál es la mejor manera de incrementar una enumeración?
- 13. ¿Cuál es la mejor manera de deducir una mesa?
- 14. ¿Cuál es la mejor manera de barajar un NSMutableArray?
- 15. ¿Cuál es la mejor manera de implementar un "temporizador"?
- 16. ¿Cuál es la mejor manera de probar un RedirectToAction?
- 17. ¿Cuál es la mejor manera de crear una miniatura de página web?
- 18. ¿Cuál es la mejor manera de atrapar una excepción IllegalArgumentException
- 19. ¿Cuál es la mejor manera de implementar una aplicación Pylons?
- 20. ¿cuál es la mejor manera de verificar una matriz vacía?
- 21. ¿Cuál es la mejor manera de copiar una lista?
- 22. ¿Cuál es la mejor manera de probar un procedimiento almacenado?
- 23. ¿Cuál es la mejor manera de implementar protocolos?
- 24. ¿Cuál es la mejor manera de crear un sistema de revisión simple usando MySQL?
- 25. ¿Cuál es la mejor manera de crear una matriz de solo lectura en C#?
- 26. ¿Cuál es la mejor manera de crear una matriz de crecimiento dinámico en Scala?
- 27. ¿Cuál es la mejor manera de crear y completar una tabla de números?
- 28. ¿Cuál es la mejor manera de vaciar un directorio?
- 29. ¿Cuál es la mejor manera de inicializar un frijol?
- 30. ¿Cuál es la mejor manera de crear un atributo de clase en Moose?
Probablemente, desea utilizar las funciones de dibujo de Core Graphics para dibujar la sombra. –
Estas preguntas son muy similares a las tuyas: http://stackoverflow.com/questions/962827/uiimage-shadow, http://stackoverflow.com/questions/1943087/i-am-trying-to-add-a-drop -shadow-a-a-uimageview –