Saya memiliki slider untuk survei yang menampilkan string berikut berdasarkan nilai slider: "Sangat Buruk, Buruk, Oke, Bagus, Sangat Bagus".
Berikut adalah kode untuk slider:
- (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];
}
Saya ingin "Sangat Buruk" menjadi merah, "Buruk" menjadi oranye, "Oke" menjadi kuning, "Baik" dan "Sangat Bagus" menjadi hijau.
Saya tidak mengerti bagaimana menggunakannya NSAttributedString
untuk menyelesaikan ini.
Jawaban:
Tidak perlu menggunakan
NSAttributedString
. Yang Anda butuhkan hanyalah label sederhana dengan yang tepattextColor
. Plus solusi sederhana ini akan bekerja dengan semua versi iOS, bukan hanya iOS 6.Tetapi jika Anda ingin menggunakannya secara tidak perlu
NSAttributedString
, Anda dapat melakukan sesuatu seperti ini:sumber
NSAttributedString
untuk tugas ini. Ini akan menjadi satu hal jika teks label membutuhkan banyak atribut tetapi tidak. Seluruh label harus satu warna pada satu waktu.NSAttributedString
. Jadi itu yang mereka minta. Pertanyaan sebenarnya seharusnya adalah "Bagaimana mengatur warna label berdasarkan nilainya" . Saya menunjukkan bahwa solusi tidak memerlukanNSAttributedString
dan menunjukkan jawaban yang jauh lebih sederhana. Dan OP setuju dengan menerima jawaban saya yang jauh lebih sederhana. Jika OP benar - benar inginNSAttributedString
, mereka tidak akan menerima jawaban saya. Jadi tidak ada alasan untuk suara turun. Saya menjawab pertanyaan yang sebenarnya dan OP menerima.NSForegroundColorAttributeName
kunci, yang sulit saya temukan di dokumen Apple.Gunakan sesuatu seperti ini (Tidak diperiksa kompilator)
sumber
Dalam Swift 4 :
Dalam Swift 3 :
Nikmati.
sumber
Untuk Swift 5:
Untuk Swift 4:
Untuk Swift 3:
sumber
Anda bisa membuat
NSAttributedString
ATAU
NSMutableAttributedString
untuk menerapkan atribut khusus dengan Ranges.Atribut yang Tersedia: NSAttributedStringKey
MEMPERBARUI:
Cepat 5.1
sumber
Dengan Swift 4,
NSAttributedStringKey
memiliki properti statis yang disebutforegroundColor
.foregroundColor
memiliki deklarasi berikut:Kode Playground berikut menunjukkan cara mengatur warna teks
NSAttributedString
instance denganforegroundColor
:Kode di bawah ini menunjukkan kemungkinan
UIViewController
implementasi yang bergantung padaNSAttributedString
untuk memperbarui teks dan warna teksUILabel
dariUISlider
:Namun perlu dicatat bahwa Anda tidak benar-benar perlu menggunakan
NSAttributedString
misalnya seperti itu dan hanya bisa mengandalkanUILabel
'stext
dantextColor
sifat. Oleh karena itu, Anda dapat menggantiupdateDisplay()
implementasi Anda dengan kode berikut:sumber
Pembaruan untuk Swift 4.2
sumber
Satu liner untuk Swift:
sumber