Ich habe einen Schieberegler für eine Umfrage, der die folgenden Zeichenfolgen basierend auf dem Wert des Schiebereglers anzeigt: "Sehr schlecht, schlecht, okay, gut, sehr gut".
Hier ist der Code für den Schieberegler:
- (IBAction) sliderValueChanged:(UISlider *)sender {
scanLabel.text = [NSString stringWithFormat:@" %.f", [sender value]];
NSArray *texts=[NSArray arrayWithObjects:@"Very Bad", @"Bad", @"Okay", @"Good", @"Very Good", @"Very Good", nil];
NSInteger sliderValue=[sender value]; //make the slider value in given range integer one.
self.scanLabel.text=[texts objectAtIndex:sliderValue];
}
Ich möchte, dass "Sehr schlecht" rot ist, "Schlecht" orange, "Okay" gelb, "Gut" und "Sehr gut" grün.
Ich verstehe nicht, wie NSAttributedString
ich das machen soll.
Antworten:
Es besteht keine Notwendigkeit zur Verwendung
NSAttributedString
. Alles was Sie brauchen ist ein einfaches Etikett mit dem richtigentextColor
. Außerdem funktioniert diese einfache Lösung mit allen Versionen von iOS, nicht nur mit iOS 6.Aber wenn Sie unnötig verwenden möchten
NSAttributedString
, können Sie Folgendes tun:quelle
NSAttributedString
für diese Aufgabe nicht verwendet werden. Es wäre eine Sache, wenn der Text des Etiketts mehrere Attribute benötigt, dies jedoch nicht. Das gesamte Etikett muss jeweils eine Farbe haben.NSAttributedString
. Darum haben sie gebeten. Die eigentliche Frage sollte lauten: "Wie wird die Farbe des Etiketts anhand seines Werts festgelegt?" . Ich wies darauf hin, dass die Lösung keine erfordertNSAttributedString
und zeigte eine viel einfachere Antwort. Und das OP stimmte zu, indem es meine viel einfachere Antwort akzeptierte. Wenn das OP wirklich wollteNSAttributedString
, hätten sie meine Antwort nicht akzeptiert. Es gibt also keinen Grund für die Abstimmungen. Ich beantwortete die wahre Frage und das OP akzeptierte.NSForegroundColorAttributeName
Schlüssel, den ich in den Apple-Dokumenten nur schwer finden konnte.Verwenden Sie so etwas (nicht vom Compiler geprüft)
quelle
In Swift 4 :
In Swift 3 :
Genießen.
quelle
Für Swift 5:
Für Swift 4:
Für Swift 3:
quelle
Sie können erstellen
NSAttributedString
ODER
NSMutableAttributedString
, um benutzerdefinierte Attribute mit Bereichen anzuwenden.Verfügbare Attribute: NSAttributedStringKey
AKTUALISIEREN:
Swift 5.1
quelle
Hat mit Swift 4
NSAttributedStringKey
eine statische Eigenschaft namensforegroundColor
.foregroundColor
hat die folgende Erklärung:Der folgende Spielplatzcode zeigt, wie Sie die Textfarbe einer
NSAttributedString
Instanz mit festlegenforegroundColor
:Der folgende Code zeigt eine mögliche
UIViewController
Implementierung, die sich darauf stütztNSAttributedString
, um den Text und die Textfarbe von aUILabel
von a zu aktualisierenUISlider
:Beachten Sie jedoch, dass Sie
NSAttributedString
für ein solches Beispiel nicht wirklich verwenden müssen und sich einfach aufUILabel
'stext
undtextColor
Eigenschaften verlassen können. Daher können Sie IhreupdateDisplay()
Implementierung durch den folgenden Code ersetzen :quelle
Update für Swift 4.2
quelle
Ein Liner für Swift:
quelle