Pregunta

Tratando de implementar un UITableView de nombres similares a los contactos incorporados aplicación para el iPhone en el que el primer nombre es en letra normal y el último nombre está en negrita. Una rápida de Google sugiere que esto no es tan fácil como parece, debido a la falta iPhone SDK de soporte de texto rico en UILabels.

Una de las soluciones encontradas recomienda el uso de un UIWebView para dar formato al texto que permite HTML etiquetas de negrita para proporcionar el marcado requerido. corrígeme si me equivoco, pero esto parece ser excesivo y tendría un efecto en el rendimiento de la aplicación.

Otra solución que estoy tratando de investigar más es crear una costumbre UITableViewCell que contiene dos de lado a lado con UILabels la segunda etiqueta con formato de texto en negrita. Esto parece sencillo, pero no estoy seguro de cómo hacer que el tamaño de las etiquetas auto-horizontal para ajustar el texto (hasta un cierto ancho máximo). ¿Es esto posible a través de la Interfaz del generador o no esta necesidad de ser hecho mediante programación?

¿Estoy en el camino correcto aquí o hay una manera mucho más fácil de lograr este efecto aparentemente trivial?

¿Fue útil?

Solución

Me pregunto si debe subclase UILabel y hacer el dibujo a sí mismo. Posteriormente, se podría utilizar CGContextSelectFont, CGContextGetTextPosition, CGContextSetTextPosition, etc CGContextShowText para dibujar el texto.

Seleccione el tipo de letra normal, ajuste la posición del texto inicial, llamar su texto, avanzar a la posición del texto por unos pocos píxeles, seleccione el tipo de letra negrita, llamar su texto en negrita, y así sucesivamente.

No he hecho esto por mí mismo antes, pero estoy pensando en usar esta solución para una de mis aplicaciones.

Otros consejos

Parece que esto se ha hecho una href="https://stackoverflow.com/questions/646809/how-do-i-use-a-uiwebview-in-a-table-cell"> veces en desbordamiento de pila bajo diversas formas. Una solución común parece ser de la biblioteca Three20 TTStyledTextLabel. Hasta que el iPhone SDK incluye una etiqueta de texto interno rico y corto de rodar la mía, esta clase parece ser la mejor alternativa.

Edit: Sólo se encontró con esta solución y se ve aún mejor: https://github.com/chrisdevereux/ slash

enter code here  NSDictionary  *firstNameAttributes = @{ NSFontAttributeName : [UIFont fontWithName:@"Arial" size:20.0],
                                            NSStrokeColorAttributeName : [UIColor blackColor]};
    NSDictionary  *lastNameAttributes = @{NSFontAttributeName : [UIFont fontWithName:@"Arial-Bold" size:20.0],
                                          NSStrokeColorAttributeName : [UIColor blackColor]};
    NSString* first = @"udhaya";
    NSString* last = @" chandrika";


    NSString *append=[NSString stringWithFormat:@"%@%@",first,last];

    cell.textLabel.text = [NSString stringWithFormat:@"%@",append];

    NSMutableAttributedString * name =
    [[NSMutableAttributedString alloc] initWithString:first attributes:firstNameAttributes];
    NSMutableAttributedString * lastName =
    [[NSMutableAttributedString alloc] initWithString:last attributes:lastNameAttributes];

    [name appendAttributedString:lastName];

    [[cell textLabel] setAttributedText:name];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top