Ich versuche ein Bild mit so etwas zu maskieren:
Würden Sie mir bitte helfen?
Ich benutze diesen 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
quelle
quelle
Antworten:
Es gibt einen einfacheren Weg.
Für Swift 4 und höher folgen Sie dem Code unten
quelle
viewDidLoad
aber nichts ist passiert!Das Tutorial verwendet diese Methode mit zwei Parametern:
image
undmaskImage
diese müssen Sie beim Aufrufen der Methode festlegen. Ein Beispielaufruf könnte folgendermaßen aussehen, vorausgesetzt, die Methode befindet sich in derselben Klasse und die Bilder befinden sich in Ihrem Bundle:Hinweis - erstaunlicherweise müssen die Bilder nicht einmal die gleiche Größe haben.
Nachdem Sie Ihren Code angegeben haben, habe ich einige Nummern als Kommentare als Referenz hinzugefügt. Sie haben noch zwei Möglichkeiten. Diese ganze Sache ist eine Methode, die Sie irgendwo aufrufen. Sie müssen die darin enthaltenen Bilder nicht erstellen. Dadurch wird die Wiederverwendbarkeit der Methode auf Null reduziert.
Damit Ihr Code funktioniert. Ändern Sie den Methodenkopf ( 1. ) in
Ändern Sie dann den Namen der Variablen in 2. in
Die Methode gibt Ihre maskierten Bilder zurück, sodass Sie diese Methode an einer bestimmten Stelle aufrufen müssen. Können Sie uns den Code zeigen, in dem Sie Ihre Methode aufrufen?
quelle
UIImage *image
Code schreiben ? !!! denn auf dem-(UIimage *) maskeImage
Compiler gibt es einen Neudefinitionsfehler!Swift 3 - Einfachste Lösung, die ich gefunden habe
Ich habe eine
@IBDesignable
dafür erstellt, damit Sie den Effekt sofort auf Ihrem Storyboard sehen können.Wie benutzt man
Beispiel
Anmerkungen
quelle
Ich habe beide Codes entweder mit CALayer oder CGImageCreateWithMask ausprobiert, aber keiner von ihnen hat bei mir nicht funktioniert
Aber ich fand heraus, dass das Problem mit dem PNG-Dateiformat ist, NICHT mit dem Code !!
Also nur um meine Erkenntnisse zu teilen!
Wenn Sie verwenden möchten
Sie müssen verwenden 24bit png ohne Alpha - Kanal
Wenn Sie eine CALayer-Maske verwenden möchten, müssen Sie (24-Bit- oder 8-Bit-) PNG mit Alpha-Kanal verwenden, wobei ein transparenter Teil Ihres PNG das Bild maskiert (für eine Alpha-Maske mit glattem Farbverlauf verwenden Sie 24-Bit-PNG mit Alpha-Kanal).
quelle
Das funktioniert bei mir.
quelle
SWIFT 3 XCODE 8.1
// für den Einsatz
quelle
Schnelle Version der akzeptierten Lösung:
Nur für den Fall, dass jemand es braucht.
Es funktioniert einwandfrei für mich.
quelle
Wir haben festgestellt, dass die richtige Antwort jetzt nicht funktioniert, und haben eine kleine Drop-In-Klasse implementiert, mit deren Hilfe jedes Bild in UIImageView maskiert werden kann.
Es ist hier verfügbar: https://github.com/Werbary/WBMaskedImageView
Beispiel:
quelle