Saya memiliki UITextView
yang mendeteksi nomor telepon dan tautan, tetapi ini menimpa saya fontColor
dan mengubahnya menjadi blueColor
. Adakah cara untuk memformat warna tautan yang terdeteksi otomatis, atau haruskah saya mencoba versi manual dari fungsi ini?
iphone
uitextview
iphone-sdk-3.0
uicolor
Leandro Alves
sumber
sumber
Jawaban:
Di iOS 7 Anda dapat mengatur
tintColor
fileUITextView
. Ini mempengaruhi warna link serta garis kursor dan warna teks yang dipilih.iOS 7 juga menambahkan properti baru untuk
UITextView
dipanggillinkTextAttributes
yang tampaknya memungkinkan Anda mengontrol sepenuhnya gaya tautan.sumber
NSFontAttributeName
denganlinkTextAttributes
. Saya harus menentukan jenis huruf secara manual dalam kisaran yang sama dengan sayaNSLinkAttributeName
Alih-alih menggunakan UITextView, saya menggunakan UIWebView dan mengaktifkan "tautan deteksi otomatis". Untuk mengubah warna link, cukup buat CSS biasa untuk tag tersebut.
Saya menggunakan sesuatu seperti ini:
sumber
Anda dapat menggunakan
UIAppearance
protokol untuk menerapkan perubahan pada semua tampilan teks:Swift 4.x:
Swift 3.x:
Swift 2.x:
Objective-C:
Penampilan untuk
UITextView
tidak didokumentasikan, tetapi berfungsi dengan baik.Perhatikan
UIAppearance
catatan:Dengan kata lain: Memanggil kode ini
init()
, atauinit(coder:)
metode akan mengubah tampilan Objek UI, tetapi memanggilloadView()
, atauviewDidLoad()
viewController tidak .Jika Anda ingin mengatur tampilan untuk seluruh aplikasi,
application(_:didFinishLaunchingWithOptions:)
adalah tempat yang baik untuk memanggil kode tersebut.sumber
Masalah dengan UITextView
linkTextAttributes
adalah bahwa ini berlaku untuk semua tautan yang terdeteksi secara otomatis. Bagaimana jika Anda ingin tautan yang berbeda memiliki atribut yang berbeda?Ternyata ada triknya: konfigurasikan tautan sebagai bagian dari teks atribut tampilan teks, dan setel
linkTextAttributes
ke kamus kosong .Berikut contoh di iOS 11 / Swift 4:
sumber
Anda dapat Mengubah Warna Hyperlink dalam TextView dengan cara berikut:
Di file Nib, Anda dapat pergi ke Properties Window dan mengubah Tint menjadi warna yang Anda inginkan.
atau Anda juga dapat melakukannya secara terprogram dengan menggunakan kode di bawah ini
sumber
Warna tint juga bisa dilakukan di storyboard
sumber
Saya memang menemukan cara lain tanpa menggunakan tampilan web tetapi perlu diingat bahwa ini menggunakan API pribadi dan mungkin ditolak di appstore:
EDIT: Aplikasi saya disetujui oleh apel meskipun penggunaan api pribadi!
Pertama-tama deklarasikan kategori di UITextView dengan metode
Mereka hanya melakukan hal berikut:
Sekarang tulis metode untuk tautan berwarna:
Itu mengatur atribut gaya dengan warna tertentu pada semua jenis tautan.
UITextView dirender seperti Webiview melalui div sehingga Anda bahkan dapat melangkah lebih jauh dan mewarnai setiap jenis tautan secara terpisah:
Ini
x-apple-data-detectors-type="link"
adalah indikator untuk jenis tautan yang tepatEDIT
Pada
iOS7
ini bekerja tidak lagi. Di iOS7 Anda dapat dengan mudah mengubah warna tautan UITextView dengan menyetel warna tint. Anda tidak harus meneleponlagi, Anda akan mendapatkan pengecualian. Sebagai gantinya lakukan hal berikut jika Anda ingin mendukung iOS 7 dan yang lebih lama:
sumber
Swift 5 Answer
Bagus dan sederhana
sumber
EDIT: Jangan lakukan dengan
UITextView
, gunakanUIWebView
saja.Anda perlu membuat lembar gaya untuk itu. Tentukan kelas di sana dengan kombinasi warna yang Anda butuhkan-
sekarang gunakan kelas 'headercopy' ke halaman html Anda seperti ini-
ini akan menampilkan nomor telepon dalam warna yang Anda butuhkan dengan fungsi klik.
sumber
Kode ini akan menyetel warna nomor telepon di I-Phone tetapi membatalkan tautan panggilan otomatis.
sumber
Beginilah cara saya melakukannya menggunakan Swift 5:
sumber