Este es un enfoque diferente. Averigüe el tamaño mínimo del texto para que no se ajuste a más de una línea. Si se ajusta a más de una línea, puede averiguar usando la altura.
Usted puede utilizar este código:
CGSize maximumSize = CGSizeMake(300, 9999);
NSString *myString = @"This is a long string which wraps";
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [myString sizeWithFont:myFont
constrainedToSize:maximumSize
lineBreakMode:self.myLabel.lineBreakMode];
300 es el ancho de la pantalla con un poco de espacio para los márgenes. Debe sustituir sus propios valores por fuente y tamaño, y por lineBreakMode
si no está utilizando IB.
Ahora myStringSize
contendrá un height
que puede comparar con la altura de algo que sabe que tiene solo 1 línea de alto (con la misma fuente y tamaño). Si es más grande, necesitarás cortar el texto. Tenga en cuenta que debe agregar un ... a la cadena antes de volver a verificarla (al agregar la ... podría volver a sobrepasar el límite).
Ponga este código en un bucle para cortar el texto, luego verifique nuevamente la altura correcta.
¡Muchas gracias! Su respuesta fue correcta, y el truco para agregar el "..." antes de verificar el tamaño nuevamente fue acertado. – camilo
Para iOS 7 debe verificar [esta respuesta] (http://stackoverflow.com/a/18951386/3965) –
está en desuso después de ios7, debe usar boundingRectWithSize: .. – 7heaven