Estou pensando em mudar a cor do cursor / cursor em um UITextField
(e UITextView
se é a mesma resposta) no iOS. Vi respostas para o desenvolvimento do OSX, mas nada para o iOS.
Isso é possível?
ios
colors
uitextfield
cursor
uitextview
RileyE
fonte
fonte
UITextField
, incluindo como fazer isso no Interface Builder, em stackoverflow.com/a/18759577/1709587Respostas:
Se você está segmentando o iOS 7 ou superior, isso ficou muito mais fácil. Basta alterar o
tintColor
campo com um cursor usando o proxy de aparência e ele será aplicado em todo o aplicativo:Swift 3.0:
Objetivo-C:
A mesma resposta se aplica a um indivíduo
UITextField
:Swift 3.0:
Objetivo-C
fonte
Com o iOS7, você pode simplesmente alterar tintColor do campo de texto
fonte
Swift 3:
fonte
Nota: Esta resposta está desatualizada e deve ser usada apenas para o desenvolvimento anterior ao iOS 7. Veja outras respostas para uma solução de 1 linha usando o proxy de aparência no iOS 7.
Cheguei a essa pergunta depois de enfrentar o mesmo problema em um projeto em que estava trabalhando.
Consegui criar uma solução que será aceita pela equipe de revisão da AppStore, pois ela não usa APIs privadas existentes.
Eu criei um controle chamado DGTextField que estende o UITextField.
fonte
Funciona se você o definir no código, porque, de alguma forma, o gatilho de cores não o faz no Interface Builder (Xcode 6.1.1). É adequado sem a necessidade de alterar nenhum proxy de aparência.
fonte
Configuração
tintColor
paraUITextField
eUITextView
funciona de forma diferente. EnquantoUITextField
você não precisar chamar um código adicional após a atualizaçãotintColor
para alterar a cor do cursor,UITextView
é necessário.Então, depois de definir
tintColor
paraUITextView
(não importa em IB ou em código) você precisa chamartextView.tintColorDidChange()
a fim de aplicá-lo (na verdade, ele vai passar de configuração de exibição de texto para baixo a sua hierarquia subviews).fonte
Isso funcionou para mim rapidamente:
Você também pode definir isso no storyboard: https://stackoverflow.com/a/18759577/3075340
fonte
Instance member 'tintcolor' cannot be used on type 'UITextField'
Uma abordagem mais geral seria definir a tintColor da aparência do UIView.
Faz sentido se você estiver usando muitos elementos da interface do usuário padrão.
fonte
[UIView appearance]
Tente, está funcionando para mim.
fonte
Só é possível acessar uma propriedade privada e, portanto, pode causar uma rejeição do aplicativo Apple AppStore.
dê uma olhada nesta pergunta Stackoverflow
fonte
A abordagem de Durgesh funciona.
Eu também usei essas soluções KVC muitas vezes. Apesar de parecer indocumentado, mas funciona. Francamente, você não usa métodos particulares aqui - apenas a codificação de valor-chave que é legal.
PS Ontem, meu novo aplicativo apareceu na AppStore sem problemas com essa abordagem. E não é o primeiro caso em que uso o KVC na alteração de algumas propriedades somente leitura (como navigatonBar) ou ivars particulares.
fonte
Para a versão do Interface Builder com Swift
fonte
Se
UITextField
for fromUISearchBar
, primeiro obtenha otextField
fromsearchBar
e aplique atintColor
propriedade:fonte
Swift 4
Em viewDidLoad (), basta chamar o código abaixo:
AMOSTRA DE CÓDIGO
fonte
Eu acho que se você quiser cores personalizadas, pode ir para a
Assets.xcassets
pasta, clicar com o botão direito e selecionarNew Color Set
, depois de criar a cor que definir, dê um nome para reutilizá-la.E você pode usá-lo assim:
Testado no macOS 10.15 / iOS 13 / Swift 5
fonte
Para as pessoas que pesquisam o equivalente no SwiftUI,
Textfield
isso éaccentColor
:fonte