Saya bertanya-tanya tentang mengubah warna kursor / tanda sisipan di UITextField
(Dan UITextView
jika jawabannya sama) di iOS. Saya telah melihat jawaban untuk pengembangan OSX, tetapi tidak ada untuk iOS.
Apakah ini mungkin?
ios
colors
uitextfield
cursor
uitextview
RileyE
sumber
sumber
UITextField
, termasuk bagaimana melakukan ini di Interface Builder, di stackoverflow.com/a/18759577/1709587Jawaban:
Jika Anda menargetkan iOS 7+, ini menjadi lebih mudah. Cukup ganti
tintColor
bidang dengan kursor menggunakan proxy penampilan dan itu akan berlaku di seluruh aplikasi:Swift 3.0:
Tujuan-C:
Jawaban yang sama berlaku untuk seorang individu
UITextField
:Swift 3.0:
Objektif-C
sumber
Dengan iOS7 Anda cukup mengubah tintColor dari textField
sumber
Swift 3:
sumber
Catatan: Jawaban ini kedaluwarsa dan harus digunakan hanya untuk pengembangan pra-iOS 7. Lihat jawaban lain untuk solusi 1 baris menggunakan proksi penampilan di iOS 7.
Saya sampai pada pertanyaan ini setelah saya menghadapi masalah yang sama dalam proyek yang sedang saya kerjakan.
Saya berhasil membuat solusi yang akan diterima oleh tim peninjau AppStore karena tidak menggunakan API Pribadi apa pun yang ada.
Saya telah membuat kontrol yang disebut DGTextField yang memperluas UITextField.
sumber
Ini berfungsi jika Anda mengaturnya dalam kode, karena entah bagaimana pemicu warna tidak melakukannya di Interface Builder (Xcode 6.1.1). Ini cocok dengan baik tanpa perlu mengubah proxy penampilan.
sumber
Pengaturan
tintColor
untukUITextField
danUITextView
bekerja secara berbeda. Sedangkan untukUITextField
Anda tidak perlu memanggil kode tambahan setelah memperbaruitintColor
untuk mengubah warna kursor, tetapi untukUITextView
Anda perlu.Jadi setelah pengaturan
tintColor
untukUITextView
(tidak masalah dalam IB atau dalam kode) Anda perlu menelepontextView.tintColorDidChange()
untuk menerapkannya (sebenarnya itu akan meneruskan konfigurasi tampilan teks ke hierarki tampilan bawahnya).sumber
Ini berhasil bagi saya dengan cepat:
Anda juga dapat mengatur ini di storyboard: https://stackoverflow.com/a/18759577/3075340
sumber
Instance member 'tintcolor' cannot be used on type 'UITextField'
Pendekatan yang lebih umum adalah dengan mengatur tintColor penampilan UIView.
Masuk akal jika Anda menggunakan banyak elemen UI default.
sumber
[UIView appearance]
Coba, ini bekerja untukku.
sumber
Hanya dimungkinkan dengan mengakses properti pribadi dan karenanya dapat menyebabkan penolakan aplikasi Apple AppStore.
lihat pertanyaan Stackoverflow ini
sumber
Pendekatan Durgesh berhasil.
Saya juga menggunakan solusi KVC seperti itu berkali-kali. Meskipun tampaknya tidak berdokumen, tetapi berhasil. Terus terang, Anda tidak menggunakan metode pribadi apa pun di sini - hanya Kode-Nilai Kunci yang sah.
PS Kemarin aplikasi baru saya muncul di AppStore tanpa masalah dengan pendekatan ini. Dan ini bukan kasus pertama ketika saya menggunakan KVC dalam mengubah beberapa properti read-only (seperti navigatonBar) atau ivars pribadi.
sumber
Untuk versi Interface Builder dengan Swift
sumber
Jika
UITextField
dariUISearchBar
maka pertama dapatkantextField
darisearchBar
dan kemudian terapkantintColor
properti:sumber
Cepat 4
Di viewDidLoad () panggil saja kode di bawah ini:
SAMPEL KODE
sumber
Saya pikir. Jika Anda menginginkan beberapa warna kustom, Anda dapat pergi ke
Assets.xcassets
folder, klik kanan dan pilihNew Color Set
, setelah Anda membuat warna yang Anda atur, berikan nama untuk menggunakannya kembali.Dan Anda dapat menggunakannya seperti ini:
Diuji pada macOS 10.15 / iOS 13 / Swift 5
sumber
Untuk orang yang mencari yang setara di SwiftUI untuk
Textfield
ini adalahaccentColor
:sumber