J'essaye de masquer une image avec quelque chose comme ceci:
Pourriez vous m'aider s'il vous plait?
J'utilise ce code:
- (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
la source
la source
Réponses:
Il existe un moyen plus simple.
Pour Swift 4 et plus, suivez le code ci-dessous
la source
viewDidLoad
mais rien ne s'est passé!Le didacticiel utilise cette méthode avec deux paramètres:
image
etmaskImage
, vous devez les définir lorsque vous appelez la méthode. Un exemple d'appel pourrait ressembler à ceci, en supposant que la méthode est dans la même classe et que les images sont dans votre bundle:Remarque - étonnamment, les images n'ont même pas besoin d'être de la même taille.
Après avoir fourni votre code, j'ai ajouté quelques chiffres en tant que commentaires à titre de référence. Vous avez encore deux options. Tout cela est une méthode que vous appelez quelque part. Vous n'avez pas besoin de créer les images à l'intérieur: cela réduit la réutilisabilité de la méthode à zéro.
Pour faire fonctionner votre code. Changez la tête des méthodes ( 1. ) en
Puis changez le nom de la variable en 2. en
La méthode renverra vos images masquées, vous devrez donc appeler cette méthode à un endroit. Pouvez-vous nous montrer le code où vous appelez votre méthode?
la source
UIImage *image
code? !!! car sur le-(UIimage *) maskeImage
compilateur donne une erreur de redéfinition!Swift 3 - La solution la plus simple que j'ai trouvée
J'ai créé un
@IBDesignable
pour cela afin que vous puissiez voir l'effet tout de suite sur votre storyboard.Comment utiliser
Exemple
Remarques
la source
J'ai essayé les deux codes en utilisant CALayer ou CGImageCreateWithMask mais aucun d'entre eux n'a fonctionné pour moi
Mais j'ai découvert que le problème venait du format de fichier png, PAS du code !!
donc juste pour partager ma découverte!
Si vous souhaitez utiliser
vous devez utiliser png 24 bits sans canal alpha
Si vous souhaitez utiliser le masque CALayer, vous devez utiliser (24 bits ou 8 bits) png avec canal alpha où une partie transparente de votre png masquera l'image (pour un masque alpha dégradé lisse .. utilisez png 24 bits avec canal alpha)
la source
Cela fonctionne pour moi.
la source
SWIFT 3 XCODE 8.1
// pour utilisation
la source
Version Swift de la solution acceptée:
Juste au cas où quelqu'un en aurait besoin.
Cela fonctionne parfaitement pour moi.
la source
nous avons trouvé que la bonne réponse ne fonctionne pas maintenant et implémenté une petite classe de remplacement, qui permet de masquer toute image dans UIImageView.
Il est disponible ici: https://github.com/Werbary/WBMaskedImageView
Exemple:
la source