Je me demande de changer la couleur du curseur / curseur dans un UITextField
(Et UITextView
si c'est la même réponse) dans iOS. J'ai vu des réponses pour le développement OSX, mais rien pour iOS.
Est-ce seulement possible?
ios
colors
uitextfield
cursor
uitextview
RileyE
la source
la source
UITextField
, y compris comment procéder dans Interface Builder, à stackoverflow.com/a/18759577/1709587Réponses:
Si vous ciblez iOS 7+, cela a été rendu beaucoup plus facile. Changez simplement le
tintColor
le champ avec un curseur à l'aide du proxy d'apparence et cela s'appliquera dans toute l'application:Swift 3.0:
Objectif c:
La même réponse s'applique pour un individu
UITextField
:Swift 3.0:
Objectif c
la source
Avec iOS7, vous pouvez simplement changer la teinte de la textField
la source
Swift 3:
la source
Remarque: Cette réponse est obsolète et doit être utilisée uniquement pour le développement pré-iOS 7. Voir les autres réponses pour une solution 1 ligne utilisant le proxy d'apparence dans iOS 7.
Je suis arrivé à cette question après avoir rencontré le même problème dans un projet sur lequel je travaillais.
J'ai réussi à créer une solution qui sera acceptée par l'équipe de révision de l'AppStore car elle n'utilise aucune API privée existante.
J'ai créé un contrôle appelé DGTextField qui étend UITextField.
la source
Cela fonctionne si vous le définissez dans le code, car le déclencheur de couleur ne le fait pas dans l'Interface Builder (Xcode 6.1.1). Il convenait bien sans avoir besoin de changer de proxy d'apparence.
la source
Réglage
tintColor
pourUITextField
etUITextView
fonctionne différemment. Alors que pourUITextField
vous, vous n'avez pas besoin d'appeler un code supplémentaire après la misetintColor
à jour pour changer la couleur du curseur, mais pourUITextView
vous, vous en avez besoin.Donc, après avoir défini
tintColor
pourUITextView
(cela n'a pas d'importance dans IB ou dans le code), vous devez appelertextView.tintColorDidChange()
pour l'appliquer (en fait, il transmettra la configuration de la vue texte à sa hiérarchie de sous-vues).la source
Cela a fonctionné pour moi rapidement:
Vous pouvez également définir cela dans le storyboard: https://stackoverflow.com/a/18759577/3075340
la source
Instance member 'tintcolor' cannot be used on type 'UITextField'
Une approche plus générale serait de définir la teinte de l'apparence de l'UIView.
Est logique si vous utilisez de nombreux éléments d'interface utilisateur par défaut.
la source
[UIView appearance]
Essayez, ça marche pour moi.
la source
Cela n'est possible qu'en accédant à une propriété privée et peut donc entraîner un rejet de l'application Apple AppStore.
jetez un oeil à cette question Stackoverflow
la source
L'approche de Durgesh fonctionne.
J'ai également utilisé de telles solutions KVC à plusieurs reprises. Malgré qu'il semble être sans papiers, mais cela fonctionne. Franchement, vous n'utilisez aucune méthode privée ici - uniquement le codage valeur-clé qui est légal.
PS Hier, ma nouvelle application est apparue sur l'AppStore sans aucun problème avec cette approche. Et ce n'est pas le premier cas lorsque j'utilise KVC pour modifier certaines propriétés en lecture seule (comme navigatonBar) ou ivars privés.
la source
Pour la version d'Interface Builder avec Swift
la source
Si le
UITextField
est deUISearchBar
puis obtenez d'abord la propriététextField
fromsearchBar
puis appliqueztintColor
:la source
Swift 4
Dans viewDidLoad (), appelez simplement le code ci-dessous:
EXEMPLE DE CODE
la source
Je pense que si vous voulez des couleurs personnalisées, vous pouvez aller dans le
Assets.xcassets
dossier, faites un clic droit et sélectionnezNew Color Set
, une fois que vous avez créé la couleur que vous avez définie, donnez-lui un nom pour la réutiliser.Et vous pouvez l'utiliser comme ceci:
Testé sur macOS 10.15 / iOS 13 / Swift 5
la source
Pour les personnes qui cherchent l'équivalent en SwiftUI pour
Textfield
cela estaccentColor
:la source