Elipsis al final de UITextView

Si tengo UITextView sin desplazamiento de varias líneas cuyo text es más largo de lo que cabría en el área visible, el text simplemente se corta así:

Congress shall make no law respecting an establishment of religion, or 

¿Cómo haría que el text se muestre con un punto suspensivo en el que el corte del text es así?

 Congress shall make no law respecting an establishment of religion, or … 

Otros controles como tags y botones tienen esta habilidad.

¿Por qué no usar un UILabel configuration de UILabel a algo apropiado y get esa funcionalidad de forma gratuita?

UITextView está diseñado para desplazarse cuando la cadena es más grande que lo que la vista puede mostrar. Asegúrese de haber configurado correctamente los attributes de anclaje y de autocomposition en el código o su xib.

Aquí hay un ejemplo de una publicación de blog sobre cómo implementar sus propios puntos suspensivos.

 @interface NSString (TruncateToWidth) - (NSString*)stringByTruncatingToWidth:(CGFloat)width withFont:(UIFont *)font; @end 

 #import "NSString+TruncateToWidth.h" #define ellipsis @"…" @implementation NSString (TruncateToWidth) - (NSString*)stringByTruncatingToWidth:(CGFloat)width withFont:(UIFont *)font { // Create copy that will be the returned result NSMutableString *truncatedString = [[self mutableCopy] autorelease]; // Make sure string is longer than requested width if ([self sizeWithFont:font].width > width) { // Accommodate for ellipsis we'll tack on the end width -= [ellipsis sizeWithFont:font].width; // Get range for last character in string NSRange range = {truncatedString.length - 1, 1}; // Loop, deleting characters until string fits within width while ([truncatedString sizeWithFont:font].width > width) { // Delete character at end [truncatedString deleteCharactersInRange:range]; // Move back another character range.location--; } // Append ellipsis [truncatedString replaceCharactersInRange:range withString:ellipsis]; } return truncatedString; } @end 

Alguien me acaba de mostrar que en realidad es muy fácil hacerlo con UITextView en iOS 7 y versiones posteriores:

 UITextView *textView = [UITextView new]; textView.textContainer.lineBreakMode = NSLineBreakByTruncatingTail;