Estou tentando mascarar uma imagem com algo assim:
Você poderia me ajudar?
Estou 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
fonte
fonte
Respostas:
Existe uma maneira mais fácil.
Para Swift 4 e mais, siga o código abaixo
fonte
viewDidLoad
mas nada aconteceu!O tutorial usa este método com dois parâmetros:
image
emaskImage
, estes você deve definir ao chamar o método. Um exemplo de chamada poderia ser assim, supondo que o método esteja na mesma classe e as imagens estejam em seu pacote:Observação - surpreendentemente, as imagens nem precisam ter o mesmo tamanho.
Depois que você forneceu seu código, adicionei alguns números como comentários para referência. Você ainda tem duas opções. Tudo isso é um método, que você está chamando em algum lugar. Você não precisa criar as imagens dentro dele: isso reduz a reutilização do método a zero.
Para fazer seu código funcionar. Altere os métodos head ( 1. ) para
Em seguida, altere o nome da variável em 2. para
O método retornará suas imagens mascaradas, então você terá que chamar este método em algum lugar. Você pode nos mostrar o código onde está chamando seu método?
fonte
UIImage *image
código? !!! porque no-(UIimage *) maskeImage
compilador dá erro de redefinição!Swift 3 - Solução mais simples que encontrei
Criei um
@IBDesignable
para isso para que você pudesse ver o efeito imediatamente no seu storyboard.Como usar
Exemplo
Notas
fonte
Eu tentei os dois códigos usando CALayer ou CGImageCreateWithMask, mas nenhum deles não funcionou para mim
Mas eu descobri que o problema é com o formato do arquivo png, NÃO com o código !!
então, apenas para compartilhar minha descoberta!
Se você quiser usar
você deve usar 24 bits png sem canal alfa
Se você quiser usar a máscara CALayer, você deve usar (24 bits ou 8 bits) png com canal alfa onde parte transparente de seu png irá mascarar a imagem (para máscara alfa de gradiente suave .. use 24 bits png com canal alfa)
fonte
Isso funciona para mim.
fonte
SWIFT 3 XCODE 8.1
// para uso
fonte
Versão rápida da solução aceita:
Apenas no caso de alguém precisar.
Está funcionando para mim perfeitamente.
fonte
descobrimos que a resposta correta não está funcionando agora e implementamos uma pequena classe drop-in, o que ajuda a mascarar qualquer imagem em UIImageView.
Está disponível aqui: https://github.com/Werbary/WBMaskedImageView
Exemplo:
fonte