Pregunta

estoy ajustando mis viejas aplicaciones para iPhone 4 usando el simulador en el momento y lo que pueda a través de un comportamiento muy extraño con UILabel dibujo y sizeWithFont: constrainedToSize:. Veo que en la actualidad sólo en el simulador de iPhone 4

Estoy tratando de mostrar el siguiente texto de error al usuario: @"Nombre de usuario o contraseña incorrecta" Este texto se encuentra dentro de una caja dinámica de error que se construye a partir de tres partes:. Superior, central e inferior y por lo tanto calcular el tamaño de la etiqueta para que pueda cambiar el marco de la imagen de fondo en consecuencia centro

Este es un ejemplo del código de cálculo tamaño UILabel:

CGRect errorFrame = CGRectMake(40, 0, 240.0, 22.0);
UILabel *errorlabel = [[UILabel alloc] initWithFrame:errorFrame];
errorlabel.adjustsFontSizeToFitWidth = NO;
errorlabel.font = [UIFont fontWithName:@"HelveticaNeue" size:16];
errorlabel.textAlignment = UITextAlignmentLeft;
errorlabel.numberOfLines = 0;
errorlabel.text = @"Incorrect user name or password";
// since only the width is fixed I will use a really large height value
CGSize errorLabelSize = [errorlabel.text sizeWithFont:errorlabel.font constrainedToSize:CGSizeMake(240.0, 4600.0)];
CGRect newFrame = errorlabel.frame;
newFrame.size.height = errorLabelSize.height;
errorlabel.frame = newFrame;
    // added so I can easily see the new frame
errorlabel.backgroundColor = [UIColor redColor];
[self.errorView addSubview:errorlabel];
[errorlabel release];

Al ejecutar el código en el iPhone 3 simulador de la sizeWithFont: constrainedToSize: método devuelve una altura de 1 línea y señala este texto de error en la línea 1. Cuando funciono con el mismo código en el simulador iPhone 4 sizeWithFont: constrainedToSize: devuelve un tamaño de (170.0, 42.0) que se necesita para dos líneas, pero etiqueta en sí se dibuja en 1 línea. Es como si el código sizeWithFont no utiliza la misma lógica del código de representación.

Desde cambiar el texto de error hay ninguna opción :) alguna idea de cómo este problema de derivación o resolverlo?

Gracias de antemano

¿Fue útil?

Solución

Tengo este mismo problema, con la misma fuente. No he encontrado una manera de predecir cuándo ocurrirá, y parece que no será más que, precisamente, una línea adicional. Sucede en el dispositivo exactamente como en el simulador. Sucede en todos IOS 4.0, 4.0.1, 4.0.2 y. No he comprobado en el simulador 4.1 todavía.

Con el tiempo he trabajado en torno al señalar manualmente los lugares que se produjo y restando una altura de línea en estos lugares. Cuando aumentamos a 4,1 vamos a comprobar para ver si este comportamiento ha persistido.

Otros consejos

he notado este problema. También se dio cuenta de que cuando se utiliza el iPhone 4, un espacio en blanco que se incluye en una cadena de texto se calcula como 4 puntos de ancho, pero si se calcula el ancho de un espacio en blanco por sí mismo, que se calcula como 5 puntos de ancho .... ( usando ArialMT, 14pt)

Después de enviar este error a Apple hace un año recibí un correo electrónico de ellos diciendo que el problema debe ser resuelto en iOS5 beta 1

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top