Estoy tratando de enmascarar una imagen con algo como esto:
¿Sería tan amable de ayudarme?
Estoy usando este código:
- (void) viewDidLoad {
UIImage *OrigImage = [UIImage imageNamed:@"dogs.png"];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
UIImage *maskedImage = [self maskImage:OrigImage withMask:mask];
myUIIMage.image = maskedImage;
}
ios
objective-c
uiimage
mask
Mc.Lover
fuente
fuente
Respuestas:
Existe una forma más sencilla.
Para Swift 4 y más, siga el código a continuación
fuente
viewDidLoad
pero no pasó nada!El tutorial usa este método con dos parámetros:
image
ymaskImage
, estos debes establecerlos cuando llames al método. Un ejemplo de llamada podría verse así, asumiendo que el método está en la misma clase y las imágenes están en su paquete:Nota: sorprendentemente, las imágenes ni siquiera tienen que ser del mismo tamaño.
Después de que proporcionó su código, agregué algunos números como comentarios para referencia. Aún tienes dos opciones. Todo esto es un método, al que estás llamando en alguna parte. No es necesario crear las imágenes que contiene: esto reduce la reutilización del método a cero.
Para que su código funcione. Cambie el encabezado de métodos ( 1. ) a
Luego cambie el nombre de la variable en 2. a
El método devolverá sus imágenes enmascaradas, por lo que tendrá que llamar a este método en algún lugar. ¿Puede mostrarnos el código donde está llamando a su método?
fuente
UIImage *image
código? !!! porque en el-(UIimage *) maskeImage
compilador da error de redefinición!Swift 3 - La solución más simple que encontré
Creé un
@IBDesignable
para esto para que pudieras ver el efecto de inmediato en tu guión gráfico.Cómo utilizar
Ejemplo
Notas
fuente
Probé ambos códigos usando CALayer o CGImageCreateWithMask pero ninguno de ellos no funcionó para mí
¡Pero descubrí que el problema está en el formato de archivo png, NO en el código!
así que solo para compartir mi hallazgo!
Si quieres usar
debes usar png de 24 bits sin canal alfa
Si desea usar la máscara CALayer, debe usar png (24 bits u 8 bits) con canal alfa donde una parte transparente de su png enmascarará la imagen (para una máscara alfa de degradado suave ... use png de 24 bits con canal alfa)
fuente
Esto funciona para mi.
fuente
SWIFT 3 XCODE 8.1
// para usar
fuente
Versión rápida de la solución aceptada:
Por si acaso alguien lo necesita.
Me está funcionando a la perfección.
fuente
Descubrimos que la respuesta correcta no funciona ahora e implementamos una pequeña clase desplegable, que ayuda a enmascarar cualquier imagen en UIImageView.
Está disponible aquí: https://github.com/Werbary/WBMaskedImageView
Ejemplo:
fuente