Ich habe meine eigene Unterklasse von UIButton
. Ich füge UIImageView
es hinzu und füge ein Bild hinzu. Ich würde es gerne mit einer Tönungsfarbe über das Bild malen, aber es funktioniert nicht.
Bisher habe ich:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor clearColor];
self.clipsToBounds = YES;
self.circleView = [[UIView alloc]init];
self.circleView.backgroundColor = [UIColor whiteColor];
self.circleView.layer.borderColor = [[Color getGraySeparatorColor]CGColor];
self.circleView.layer.borderWidth = 1;
self.circleView.userInteractionEnabled = NO;
self.circleView.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:self.circleView];
self.iconView = [[UIImageView alloc]init];
[self.iconView setContentMode:UIViewContentModeScaleAspectFit];
UIImage * image = [UIImage imageNamed:@"more"];
[image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
self.iconView.image = image;
self.iconView.translatesAutoresizingMaskIntoConstraints = NO;
[self.circleView addSubview:self.iconView];
...
und bei Auswahl:
- (void) setSelected:(BOOL)selected
{
if (selected) {
[self.iconView setTintColor:[UIColor redColor]];
[self.circleView setTintColor:[UIColor redColor]];
}
else{
[self.iconView setTintColor:[UIColor blueColor]];
[self.circleView setTintColor:[UIColor blueColor]];
}
}
Was habe ich falsch gemacht? (Die Farbe des Bildes bleibt immer dieselbe wie ursprünglich.)
setTintColor
beim Erstellen der iconView tun ?Antworten:
Anstelle dieses Codes:
du solltest haben:
Verwenden Sie dies in Swift 4.1
quelle
Sie können dies auch einfach für Ihr Asset festlegen. Stellen Sie sicher, dass Ihr Bild alle weißen Pixel + transparent enthält.
quelle
(@Zhaolong Zhong Post kann nicht bearbeitet werden)
In Swift 3.0 können Sie Folgendes tun:
quelle
In Swift 2.0+ können Sie Folgendes tun:
quelle
Schnelle Version: 5.2
Ziel c
Oder
Sie können dies auch einfach für Ihr Asset festlegen.
quelle
Einen Schritt weiter. Dies ist eine Drop-In-Unterklasse von UIImageView. (Keine genaue Lösung für die ursprüngliche Frage.) Verwenden Sie diese Option im Interface Builder, indem Sie den Klassennamen auf TintedImageView setzen. Aktualisierungen in Echtzeit innerhalb des Designers, wenn sich die Farbtonfarbe ändert.
(Swift 3.1, Xcode 8.3)
quelle
Machen Sie die Bildansicht
Mach das Bild
Verdrahten Sie sie miteinander
Zeigen Sie es an
quelle
alles gesagt ist richtig. Mein Beitrag Wenn Sie sich nicht auf jede UiImageView anwenden können / wollen ODER aus Effizienzgründen müssen Sie EINMAL rendern (oder ein Beispiel für Zellen mit Tabellenansichten).
Und setzen Sie dieses UIImage auf alle UI-Elemente.
quelle
@odemolliens Antwort sollte einfach funktionieren.
Wenn Sie jedoch weiterhin Probleme haben, stellen Sie sicher, dass sich die Farbtonfarbe, die Sie auf UIImageView anwenden, von der im Interface Builder definierten unterscheidet.
quelle