Masalah yang saya alami adalah saya ingin dapat mengubah textColor dari teks tertentu dalam TextView. Saya menggunakan string gabungan, dan hanya ingin string yang saya tambahkan ke teks TextView. Tampaknya yang ingin saya gunakan adalah NSMutableAttributedString
, tetapi saya tidak menemukan sumber daya apa pun tentang cara menggunakan ini di Swift. Apa yang saya miliki sejauh ini adalah seperti ini:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
Dari sini saya tahu saya perlu menemukan rentang kata yang perlu diubah textColornya dan kemudian menambahkannya ke string yang dikaitkan. Yang perlu saya ketahui adalah bagaimana menemukan string yang benar dari atributedString, dan kemudian mengubah textColornya.
Karena saya memiliki peringkat yang terlalu rendah, saya tidak dapat menjawab pertanyaan saya sendiri, tetapi inilah jawaban yang saya temukan
Saya menemukan jawaban saya sendiri dengan menerjemahkan dari menerjemahkan beberapa kode dari
Ubah atribut substring di NSAttributedString
Berikut adalah contoh implementasi di Swift:
let string = "A \(stringOne) and \(stringTwo)"
var attributedString = NSMutableAttributedString(string:string)
let stringOneRegex = NSRegularExpression(pattern: nameString, options: nil, error: nil)
let stringOneMatches = stringOneRegex.matchesInString(longString, options: nil, range: NSMakeRange(0, attributedString.length))
for stringOneMatch in stringOneMatches {
let wordRange = stringOneMatch.rangeAtIndex(0)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.nameColor(), range: wordRange)
}
textView.attributedText = attributedString
Karena saya ingin mengubah textColor dari beberapa Strings, saya akan membuat fungsi pembantu untuk menangani ini, tetapi ini berfungsi untuk mengubah textColor.
sumber
Jawaban:
Saya melihat Anda agak menjawab pertanyaan itu, tetapi untuk memberikan cara yang sedikit lebih ringkas tanpa menggunakan regex untuk menjawab pertanyaan judul:
Untuk mengubah warna panjang teks Anda perlu mengetahui indeks awal dan akhir dari karakter yang akan diwarnai dalam string misalnya
Kemudian Anda mengonversi ke string yang diatribusikan dan menggunakan 'tambahkan atribut' dengan NSForegroundColorAttributeName:
Daftar atribut standar lebih lanjut yang dapat Anda atur dapat ditemukan di dokumentasi Apple
sumber
main_string
,string_to_color
danrange
tidak pernah bermutasi. Pertimbangkan untuk mengubahnya menjadilet
konstan?SWIFT 5
SWIFT 4.2
sumber
Pembaruan Swift 2.1:
self.helpText
adalah jalanUILabel
keluar.sumber
Swift 4.2 dan Swift 5 mewarnai bagian string.
Cara yang sangat mudah untuk menggunakan NSMutableAttributedString sambil memperluas String. Ini juga dapat digunakan untuk mewarnai lebih dari satu kata di seluruh string.
Tambahkan file baru untuk ekstensi, File -> New -> Swift File dengan nama ex. "NSAttributedString + TextColouring" dan tambahkan kodenya
Sekarang Anda dapat menggunakan secara global di setiap viewcontroller yang Anda inginkan:
sumber
Jawaban sudah diberikan di posting sebelumnya tetapi saya memiliki cara berbeda untuk melakukan ini
Swift 3x:
Semoga ini bisa membantu siapa saja!
sumber
Jawaban Chris sangat membantu saya, jadi saya menggunakan pendekatannya dan berubah menjadi fungsi yang dapat saya gunakan kembali. Ini mari saya menetapkan warna ke substring sambil memberi sisa string warna lain.
sumber
Swift 4.1.0
misalnya jika Anda ingin mengubah font di NavBar:
sumber
Anda dapat menggunakan ekstensi ini, saya mengujinya
cepat 4.2
sumber
Swift 2.2.0
sumber
.CGColor
.Cara termudah untuk melakukan label dengan gaya berbeda seperti warna, font, dll adalah menggunakan properti "Attributed" di Attributes Inspector. Cukup pilih bagian teks dan ubah seperti yang Anda inginkan
sumber
Berdasarkan jawaban sebelum saya membuat ekstensi string
Anda bisa meneruskan atribut teks ke metode
Panggil seperti ini
sumber
Swift 4.1.0
Saya telah berubah dari ini Di Swift 3
Dan ini di Swift 4.0
ke Swift 4.1
Bekerja dengan baik
sumber
cepat 4.2
sumber
Untuk semua orang yang mencari " Menerapkan warna tertentu ke beberapa kata dalam teks ", kami dapat melakukannya menggunakan NSRegularExpression
Tautan referensi: https://gist.github.com/aquajach/4d9398b95a748fd37e88
sumber
sumber
Dengan fungsi sederhana ini Anda dapat menetapkan teks dan menyorot kata yang dipilih.
Anda juga dapat mengubah UITextView menjadi UILabel , dll.
sumber
Untuk mengubah warna warna font, pertama-tama pilih atribut daripada polos seperti pada gambar di bawah
Anda kemudian perlu memilih teks di bidang atribut dan kemudian memilih tombol warna di sisi kanan perataan. Ini akan mengubah warnanya.
sumber
Anda bisa menggunakan metode ini. Saya menerapkan metode ini di kelas utilitas umum saya untuk mengakses secara global.
sumber
Jika Anda menggunakan Swift 3x dan UITextView, mungkin NSForegroundColorAttributeName tidak akan berfungsi (tidak berhasil untuk saya apa pun pendekatan yang saya coba).
Jadi, setelah beberapa penggalian, saya menemukan solusi.
sumber
Cara super mudah untuk melakukan ini.
Untuk detail lebih lanjut klik di sini: https://github.com/iOSTechHub/AttributedString
sumber
Anda perlu mengubah parameter textview, bukan parameter string yang diatribusikan
sumber
Silakan periksa cocoapod Prestyler :
sumber
}
sumber
Anda dapat menggunakan ekstensi sederhana
sumber