Banyak warna dalam NSString
atau NSMutableStrings
tidak dimungkinkan. Jadi saya sudah mendengar sedikit tentang NSAttributedString
yang diperkenalkan dengan iPad SDK 3.2 (atau sekitar 3.2) dan tersedia di iPhone pada iPhone SDK 4.0 beta .
Saya ingin memiliki string yang memiliki tiga warna.
Alasan saya tidak menggunakan 3 NSStrings terpisah, adalah karena panjang masing-masing dari tiga NSAttributedString
substring sering berubah dan jadi saya lebih suka, tidak menggunakan perhitungan untuk memposisikan ulang 3 NSString
objek terpisah .
Jika mungkin menggunakan NSAttributedString
cara saya membuat yang berikut - (jika tidak memungkinkan dengan string NSAttributed, bagaimana Anda melakukannya):
Edit:
Ingat, @"first"
, @"second"
dan @"third"
akan digantikan oleh string lain setiap saat. Jadi menggunakan nilai NSRange hardcoded tidak akan berhasil.
sumber
Jawaban:
Ketika membangun string yang dikaitkan, saya lebih suka menggunakan subclass yang bisa berubah, hanya untuk menjaga semuanya tetap bersih.
Yang sedang berkata, inilah cara Anda membuat string dikaitkan tri-warna:
mengetik di browser. pelaksana peringatan
Jelas Anda tidak akan mendapatkan hard-code dalam rentang seperti ini. Mungkin sebaliknya Anda bisa melakukan sesuatu seperti:
sumber
NSAttributedString
. Namun, ada hal-hal open source, seperti OHAttributedLabel .kCTForegroundColorAttributeName
daripadaNSForegroundColorAttributeName
.Pertanyaannya sudah dijawab ... tapi saya ingin menunjukkan cara menambahkan bayangan dan mengubah font dengan NSAttributedString juga, sehingga ketika orang mencari topik ini mereka tidak harus terus mencari.
Ini adalah versi Swift ...
Peringatan! Ini bekerja untuk 4s.
Untuk 5s Anda harus mengubah semua nilai Float ke nilai Double (karena kompiler belum bekerja dengan benar)
Swift enum untuk pilihan font:
Array cepat untuk akses enum (diperlukan karena enum tidak dapat menggunakan '-'):
Fungsi teks yang dikaitkan dengan cepat:
ekstensi pertama dan terakhir yang digunakan untuk menemukan rentang dalam array string:
warna baru:
pengganti makro saya:
pembuat tombol saya dengan teks yang dikaitkan:
pembuat UIView / UILabel saya dengan teks, bayangan, dan sudut bundar yang dikaitkan:
bayangan generik tambahkan:
lihat ekstensi untuk gaya tampilan:
tampilan sebenarnya memuat fungsi:
sumber
Saya pikir, ini adalah cara yang sangat mudah digunakan
regular expressions
untuk menemukan rentang penerapan atribut. Beginilah cara saya melakukannya:Saya sedang mencari daftar atribut yang tersedia dan tidak menemukannya di sini dan di halaman pertama referensi kelas. Jadi saya memutuskan untuk mengirim informasi di sini tentang itu.
Atribut Standar
String yang dikaitkan mendukung atribut standar berikut untuk teks. Jika kunci tidak ada dalam kamus, gunakan nilai default yang dijelaskan di bawah ini.
Panduan pemrograman NSAttributedString
Referensi kelas lengkap ada di sini .
sumber
Solusi ini akan bekerja untuk apa saja
sumber
Saya menulis pembantu untuk menambahkan atribut dengan mudah:
https://github.com/shmidt/MASAttributes
Anda dapat menginstal melalui CocoaPods juga:
pod 'MASAttributes', '~> 1.0.0'
sumber
Sejak iOS 7 Anda dapat menggunakan
NSAttributedString
sintaks HTML:Anda harus menambahkan file "string.html" ke proyek Anda, dan konten html bisa seperti ini:
Sekarang, Anda dapat menggunakan
NSAttributedString
seperti yang Anda inginkan, bahkan tanpa file HTML, seperti misalnya:Sumber
sumber
Saya selalu menemukan bekerja dengan string dikaitkan menjadi proses yang sangat panjang dan membosankan.
Jadi saya membuat Aplikasi Mac yang membuat semua kode untuk Anda.
https://itunes.apple.com/us/app/attributed-string-creator/id730928349?mt=12
sumber
Solusi yang lebih mudah dengan ekstensi string yang dikaitkan.
Coba ini dan lihat (Diuji dalam Swift 3 & 4)
Inilah hasil yang diharapkan:
sumber
Dalam Swift 4:
sumber
Anda dapat memuat
HTML
string yang dikaitkanSwift
sebagai berikutUntuk memuat
html
file darihttp://sketchytech.blogspot.in/2013/11/creating-nsattributedstring-from-html.html
Dan atur string sesuai atribut yang diperlukan Anda .... ikuti ini ..
http://makeapppie.com/2014/10/20/swift-swift-using-attributed-strings-in-swift/
sumber
Saya membuat perpustakaan yang membuat ini jauh lebih mudah. Lihat ZenCopy.
Anda dapat membuat objek Gaya, dan / atau mengaturnya ke tombol untuk referensi nanti. Seperti ini:
Kemudian, Anda dapat dengan mudah membangun string DAN gaya mereka DAN memiliki params :)
Anda juga dapat membuat gaya dengan mudah dengan pencarian regex!
Ini akan menata semua kata dengan '@' di depannya dengan gaya 'token'. (mis. @jpmcglone)
Saya harus tetap membuatnya bekerja dengan semua yang
NSAttributedString
ditawarkan, tapi saya pikirfontName
,fontSize
dan warna menutupi sebagian besar. Harapkan banyak pembaruan segera :)Saya dapat membantu Anda memulai ini jika perlu. Juga mencari umpan balik, jadi jika itu membuat hidup Anda lebih mudah, saya katakan misi tercapai.
sumber
sumber
Untuk mengatasi masalah seperti itu saya membuat perpustakaan dengan cepat yang disebut Atributika.
Anda dapat menemukannya di sini https://github.com/psharanda/Atributika
sumber
Cepat 4
Daftar atribut silakan lihat di sini NSAttributedStringKey di Apple Documents
sumber
Cara super mudah untuk melakukan ini.
Untuk detail lebih lanjut klik di sini; https://github.com/iOSTechHub/AttributedString
sumber