visitado pantalla los link hora hipervinculos como color cambio cambiar iphone uitextview iphone-sdk-3.0 uicolor

iphone - pantalla - ¿Puedo cambiar el color de los enlaces detectados automáticamente en UITextView?



como cambiar el color de safari en iphone (9)

De hecho, encontré otra manera sin usar una vista web, pero tenga en cuenta que esto utiliza una API privada y puede ser rechazada en la tienda de aplicaciones:

EDITAR: ¡ Mi aplicación fue aprobada por Apple a pesar del uso privado de API!

Primero declara una categoría en UITextView con los métodos

- (id)contentAsHTMLString; - (void)setContentToHTMLString:(id)arg1;

Ellos solo están haciendo lo siguiente:

- (id)contentAsHTMLString; { return [super contentAsHTMLString]; } - (void)setContentToHTMLString:(id)arg1; { [super setContentToHTMLString:arg1]; }

Ahora escribe un método para enlaces coloridos:

- (void) colorfillLinks; { NSString *contentString = [self.textViewCustomText contentAsHTMLString]; contentString = [contentString stringByReplacingOccurrencesOfString:@"x-apple-data-detectors=/"true/"" withString:@"x-apple-data-detectors=/"true/" style=/"color:white;/""]; [self.textViewCustomText setContentToHTMLString:contentString]; }

Establece el atributo de estilo con un color específico en todos los tipos de enlaces.

UITextViews se renderizan como Webiview a través de divs, por lo que incluso podría ir más allá y colorear cada tipo de enlace por separado:

<div><a href="http://www.apple.com" x-apple-data-detectors="true" style="color:white;" x-apple-data-detectors-type="link" x-apple-data-detectors-result="0">http://www.apple.com</a></div>

El x-apple-data-detectors-type="link" es el indicador del tipo exacto del 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 llamar

- (id)contentAsHTMLString;

nunca más, obtendrás una excepción. En su lugar, haga lo siguiente si desea admitir iOS 7 y siguientes:

- (void) colorfillLinks; { if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { self.tintColor = [UIColor colorWithRed:79.0/255.0 green:168.0/255.0 blue:224.0/255.0 alpha:1.0]; } else if(![self isFirstResponder ]) { NSString *contentString = [self contentAsHTMLString]; contentString = [contentString stringByReplacingOccurrencesOfString:@"x-apple-data-detectors=/"true/"" withString:@"x-apple-data-detectors=/"true/" style=/"color:#DDDDDE;/""]; [self setContentToHTMLString:contentString]; } }

Tenía una UITextView que detecta números de teléfono y enlaces, pero esto anula my fontColor y lo cambia a blueColor . ¿Hay alguna manera de formatear el color de los enlaces detectados automáticamente, o debería probar una versión manual de esta función?


El color del tinte se puede hacer en el guión gráfico también


El problema con UITextView linkTextAttributes es que se aplica a todos los enlaces detectados automáticamente. ¿Qué pasa si quieres que diferentes enlaces tengan diferentes atributos?

Resulta que hay un truco: configurar los enlaces como parte del texto atribuido de la vista de texto, y establecer el linkTextAttributes en un diccionario vacío .

Aquí hay un ejemplo en iOS 11 / Swift 4:

// mas is the mutable attributed string we are forming... // ... and we''re going to use as the text view''s `attributedText` mas.append(NSAttributedString(string: "LINK", attributes: [ NSAttributedStringKey.link : URL(string: "https://www.apple.com")!, NSAttributedStringKey.foregroundColor : UIColor.green, NSAttributedStringKey.underlineStyle : NSUnderlineStyle.styleSingle.rawValue ])) // ... self.tv.attributedText = mas // this is the important thing: self.tv.linkTextAttributes = [:]


En iOS 7 puedes establecer el tintColor de UITextView . Afecta el color del enlace, así como la línea del cursor y el color del texto seleccionado.

iOS 7 también agregó una nueva propiedad a UITextView llamada linkTextAttributes que parece permitirle controlar completamente el estilo del enlace.


En lugar de utilizar una UITextView, utilicé UIWebView y habilité los "enlaces de detección automática". Para cambiar el color del enlace, acaba de crear un CSS regular para la etiqueta.

Usé algo como esto:

NSString * htmlString = [NSString stringWithFormat:@"<html><head><script> document.ontouchmove = function(event) { if (document.body.scrollHeight == document.body.clientHeight) event.preventDefault(); } </script><style type=''text/css''>* { margin:0; padding:0; } p { color:black; font-family:Helvetica; font-size:14px; } a { color:#63B604; text-decoration:none; }</style></head><body><p>%@</p></body></html>", [update objectForKey:@"text"]]; webText.delegate = self; [webText loadHTMLString:htmlString baseURL:nil];


Este código establecerá el color de un número de teléfono en un I-Phone pero anulará el enlace de llamada automática.

<div><a href="#" x-apple-data-detectors="true" style="color:white;" x-apple-data-detectors-type="link" x-apple-data-detectors-result="0">p&nbsp;&nbsp;0232 963 959</a></div>


Puede cambiar el color del hipervínculo en una vista de texto de la siguiente manera:

En el archivo Nib, puede ir a la Ventana de Propiedades y cambiar el Tinte a cualquier color que desee.

o también puede hacerlo programáticamente utilizando el siguiente código

[YOURTEXTVIEW setTintColor:[UIColor whiteColor]];


Puede usar el protocolo UIAppearance para aplicar cambios a todas las vistas de texto:

Swift 4.x:

UITextView.appearance().linkTextAttributes = [ NSAttributedStringKey.foregroundColor.rawValue: UIColor.red ]

Swift 3.x:

UITextView.appearance().linkTextAttributes = [ NSForegroundColorAttributeName: UIColor.red ]

Swift 2.x:

UITextView.appearance().linkTextAttributes = [ NSForegroundColorAttributeName: UIColor.redColor() ]

C objetivo:

[UITextView appearance].linkTextAttributes = @{ NSForegroundColorAttributeName : UIColor.redColor };

La apariencia de UITextView no está documentada, pero funciona bien.

Tenga en cuenta UIAppearance notas de UIAppearance :

iOS aplica cambios de apariencia cuando una vista ingresa a una ventana, no cambia la apariencia de una vista que ya está en una ventana. Para cambiar la apariencia de una vista que se encuentra actualmente en una ventana, elimine la vista de la jerarquía de vistas y luego vuelva a colocarla.

En otras palabras: Llamar a este código en los métodos init() o init(coder:) cambiará la apariencia del objeto UI, pero la invocación de loadView() o viewDidLoad() de viewController no lo hará .
Si desea establecer la apariencia para toda la aplicación, la application(_:didFinishLaunchingWithOptions:) es un buen lugar para llamar a dicho código.


EDITAR: No lo haga con UITextView , use UIWebView en UIWebView lugar.

Necesitas hacer una hoja de estilo para eso. Defina una clase allí con la combinación de colores que necesita-

.headercopy { font-family: "Helvetica"; font-size: 14px; line-height: 18px; font-weight:bold; color: #25526e; } a.headercopy:link { color:#ffffff; text-decoration:none; } a.headercopy:hover { color:#00759B; text-decoration:none; } a.headercopy:visited { color:#ffffff; text-decoration:none; } a.headercopy:hover { color:#00759B; text-decoration:none; }

ahora usa la clase ''headercopy'' en tu página html como esta-

<b>Fax:</b><a href="tel:646.200.7535" class="headercopy"> 646-200-7535</a><br />

esto mostrará el número de teléfono en el color que necesita con la funcionalidad de clic.