Tenía un UITextView
que detecta números de teléfono y enlaces, pero esto anula mi fontColor
y lo cambia a blueColor
. ¿Hay alguna forma de formatear el color de los enlaces detectados automáticamente, o debería probar una versión manual de esta función?
iphone
uitextview
iphone-sdk-3.0
uicolor
Leandro Alves
fuente
fuente
Respuestas:
En iOS 7 puede configurar
tintColor
elUITextView
. Afecta al color del enlace, así como a la línea del cursor y al color del texto seleccionado.iOS 7 también agregó una nueva propiedad a la
UITextView
llamadalinkTextAttributes
que parecería permitirle controlar completamente el estilo del enlace.fuente
NSFontAttributeName
conlinkTextAttributes
. Tuve que especificar manualmente la fuente en el mismo rango que miNSLinkAttributeName
En lugar de usar un UITextView, usé un UIWebView y habilité los "enlaces de detección automática". Para cambiar el color del enlace, acaba de crear un CSS normal para la etiqueta.
Usé algo como esto:
fuente
Puedes usar
UIAppearance
protocolo para aplicar cambios a todas las vistas de texto:Rápido 4.x:
Swift 3.x:
Rápido 2.x:
C objetivo:
Apariencia para
UITextView
no está documentada, pero funciona bien.Tenga en cuenta las
UIAppearance
notas:En otras palabras: se llama a este código en
init()
, oinit(coder:)
métodos serán cambiar la apariencia de objetos de interfaz de usuario, pero llamar aloadView()
, oviewDidLoad()
de viewController no lo hará .Si desea establecer la apariencia de toda la aplicación,
application(_:didFinishLaunchingWithOptions:)
es un buen lugar para llamar a dicho código.fuente
El problema con UITextView
linkTextAttributes
es que se aplica a todos los enlaces detectados automáticamente. ¿Qué sucede si desea que diferentes enlaces tengan diferentes atributos?Resulta que hay un truco: configure los enlaces como parte del texto atribuido de la vista de texto y establezca el
linkTextAttributes
en un diccionario vacío .Aquí hay un ejemplo en iOS 11 / Swift 4:
fuente
Puede cambiar el color del hipervínculo en un TextView de la siguiente manera:
En el archivo Nib, puede ir a la ventana Propiedades y cambiar el Tinte al color que desee.
o también puede hacerlo programáticamente usando el siguiente código
fuente
El color del tinte también se puede hacer en el guión gráfico.
fuente
De hecho, encontré otra forma sin usar una vista web, pero tenga en cuenta que esto usa una API privada y puede ser rechazada en la tienda de aplicaciones:
EDITAR: ¡ Mi aplicación fue aprobada por Apple aunque el uso de la API privada!
Primero declare una categoría en UITextView con los métodos
Simplemente están haciendo lo siguiente:
Ahora escribe un método para enlaces coloridos:
Establece el atributo de estilo con un color específico en todo tipo de enlaces.
UITextViews se procesan en Webiview como a través de divs, por lo que incluso podría ir más allá y colorear cada tipo de enlace por separado:
El
x-apple-data-detectors-type="link"
es el indicador del tipo exacto de enlace.EDITAR
En
iOS7
esto ya no funciona. En iOS7, puede cambiar fácilmente el color del enlace de UITextViews configurando el color del tinte. No deberías llamarmás, obtendrá una excepción. En su lugar, haga lo siguiente si desea admitir iOS 7 y versiones anteriores:
fuente
Respuesta rápida 5
Agradable y simple
fuente
EDITAR: No lo hagas con
UITextView
, usaUIWebView
en su lugar.Necesitas hacer una hoja de estilo para eso. Defina una clase allí con la combinación de colores que necesita-
ahora use la clase 'headercopy' en su página html como esta-
esto mostrará el número de teléfono en el color que necesita con la función de clic.
fuente
Este código establecerá el color de un número de teléfono en un I-Phone pero anula el enlace de llamada automática.
fuente
Así es como lo hice usando Swift 5:
fuente