Me pregunto sobre cambiar el color del cursor / cursor en un UITextField
(Y UITextView
si es la misma respuesta) en iOS. He visto respuestas para el desarrollo de OSX, pero nada para iOS.
¿Es esto posible?
ios
colors
uitextfield
cursor
uitextview
RileyE
fuente
fuente
UITextField
, incluyendo cómo hacer esto en Interface Builder, en stackoverflow.com/a/18759577/1709587Respuestas:
Si está apuntando a iOS 7+, esto se ha hecho mucho más fácil. Simplemente cambie el
tintColor
campo con un cursor usando el proxy de apariencia y se aplicará en toda la aplicación:Swift 3.0:
C objetivo:
La misma respuesta aplica para un individuo
UITextField
:Swift 3.0:
C objetivo
fuente
Con iOS7, simplemente puede cambiar tintColor del textField
fuente
Swift 3:
fuente
Nota: Esta respuesta está desactualizada y debe usarse solo para el desarrollo anterior a iOS 7. Vea otras respuestas para una solución de 1 línea usando el proxy de apariencia en iOS 7.
Llegué a esta pregunta después de enfrentar el mismo problema en un proyecto en el que estaba trabajando.
Logré crear una solución que será aceptada por el equipo de revisión de AppStore, ya que no utiliza ninguna API privada existente.
He creado un control llamado DGTextField que extiende UITextField.
fuente
Funciona si lo configura en código, porque de alguna manera el disparador de color no lo hace en el Creador de interfaces (Xcode 6.1.1). Se adapta bien sin necesidad de cambiar ningún proxy de apariencia.
fuente
Configuración
tintColor
deUITextField
yUITextView
funciona de forma diferente. Si bienUITextField
no necesita llamar a un código adicional después de la actualizacióntintColor
para cambiar el color del cursor, pero síUITextView
lo necesita.Así que después de ajustar
tintColor
paraUITextView
(no importa en IB o en el código) es necesario llamartextView.tintColorDidChange()
con el fin de aplicarlo (en realidad pasará de configuración de vista de texto a su jerarquía subvistas).fuente
Esto me funcionó rápidamente:
También puede configurar esto en el guión gráfico: https://stackoverflow.com/a/18759577/3075340
fuente
Instance member 'tintcolor' cannot be used on type 'UITextField'
Un enfoque más general sería establecer el tintColor de la apariencia de UIView.
Tiene sentido si está utilizando muchos elementos de IU predeterminados.
fuente
[UIView appearance]
Intenta, está funcionando para mí.
fuente
Solo es posible accediendo a una propiedad privada y, por lo tanto, puede provocar el rechazo de la aplicación Apple AppStore.
Echa un vistazo a esta pregunta de Stackoverflow
fuente
El enfoque de Durgesh funciona.
También usé tales soluciones KVC muchas veces. A pesar de que parece no estar documentado, pero funciona. Francamente, no utiliza ningún método privado aquí, solo la codificación de valor clave que es legal.
PD: ayer mi nueva aplicación apareció en AppStore sin ningún problema con este enfoque. Y no es el primer caso cuando uso KVC para cambiar algunas propiedades de solo lectura (como navigatonBar) o ivars privados.
fuente
Para la versión de Interface Builder con Swift
fuente
Si el
UITextField
es deUISearchBar
, primero obtenga eltextField
desearchBar
y luego aplique latintColor
propiedad:fuente
Swift 4
En viewDidLoad () simplemente llame al siguiente código:
CÓDIGO MUESTRA
fuente
Creo que si desea algunos colores personalizados, puede ir a la
Assets.xcassets
carpeta, hacer clic derecho y seleccionarNew Color Set
, una vez que haya creado el color que configuró, asígnele un nombre para reutilizarlo.Y puedes usarlo así:
Probado en macOS 10.15 / iOS 13 / Swift 5
fuente
Para las personas que buscan el equivalente en SwiftUI para
Textfield
esto esaccentColor
:fuente