Eu tinha um UITextView
que detecta números de telefone e links, mas substitui o meu fontColor
e muda para blueColor
. Existe uma maneira de formatar a cor dos links detectados automaticamente ou devo tentar uma versão manual desta função?
iphone
uitextview
iphone-sdk-3.0
uicolor
Leandro Alves
fonte
fonte
Respostas:
No iOS 7, você pode definir
tintColor
oUITextView
. Isso afeta a cor do link, bem como a linha do cursor e a cor do texto selecionado.O iOS 7 também adicionou uma nova propriedade ao
UITextView
chamadolinkTextAttributes
que parece permitir que você controle totalmente o estilo do link.fonte
NSFontAttributeName
comlinkTextAttributes
. Tive que especificar manualmente a fonte no mesmo intervalo que meuNSLinkAttributeName
Em vez de usar um UITextView, usei um UIWebView e habilitei os "links de detecção automática". Para mudar a cor do link, basta criar um CSS regular para a tag.
Eu usei algo assim:
fonte
Você pode usar o
UIAppearance
protocolo para aplicar alterações em todas as visualizações de texto:Swift 4.x:
Swift 3.x:
Swift 2.x:
Objective-C:
A aparência de
UITextView
não está documentada, mas funciona bem.Tenha em mente as
UIAppearance
notas:Em outras palavras: chamar esse código em
init()
, ouinit(coder:)
métodos irá mudar a aparência de objetos de interface do usuário, mas chamandoloadView()
, ouviewDidLoad()
de viewController não vai .Se você deseja definir a aparência de todo o aplicativo,
application(_:didFinishLaunchingWithOptions:)
é um bom lugar para chamar esse código.fonte
O problema com UITextView
linkTextAttributes
é que ele se aplica a todos os links detectados automaticamente. E se você quiser que links diferentes tenham atributos diferentes?Acontece que há um truque: configure os links como parte do texto atribuído da visualização de texto e defina o
linkTextAttributes
para um dicionário vazio .Aqui está um exemplo no iOS 11 / Swift 4:
fonte
Você pode alterar a cor do hiperlink em um TextView da seguinte maneira:
No arquivo Nib, você pode ir para a janela Propriedades e alterar a tonalidade para a cor que desejar.
ou você também pode fazer isso programaticamente usando o código abaixo
fonte
A tonalidade da cor também pode ser feita no storyboard
fonte
Na verdade, encontrei outra maneira sem usar um webview, mas tenha em mente que isso usa API privada e pode ser rejeitado no appstore:
EDITAR: Meu aplicativo foi aprovado pela apple, embora o uso de API privada!
Primeiro declare uma categoria em UITextView com os métodos
Eles estão apenas fazendo o seguinte:
Agora escreva um método para links coloridos:
Ele define o atributo de estilo com uma cor específica em todos os tipos de links.
UITextViews são renderizados Webiview como via divs para que você possa ir ainda mais longe e colorir cada tipo de link separadamente:
O
x-apple-data-detectors-type="link"
é o indicador para o tipo exato de linkEDITAR
Sobre
iOS7
isso não está mais funcionando. No iOS7, você pode facilmente alterar a cor do link de UITextViews definindo a cor da tonalidade. Você não deve ligarmais, você terá uma exceção. Em vez disso, faça o seguinte se quiser oferecer suporte ao iOS 7 e inferior:
fonte
Resposta Swift 5
Bom e simples
fonte
EDIT: Não faça isso com
UITextView
, use emUIWebView
vez disso.Você precisa fazer uma folha de estilo para isso. Defina uma classe lá com a combinação de cores que você precisa-
agora use a classe 'headercopy' em sua página html como esta-
isso exibirá o número de telefone na cor necessária com a funcionalidade de clique.
fonte
Este código definirá a cor de um número de telefone em um I-Phone, mas anula o link de chamada automática.
fonte
Foi assim que fiz usando o Swift 5:
fonte