J'adapte mes anciennes applications à l'iPhone 4 en utilisant le simulateur en ce moment et je peux traverser un comportement très étrange avec UILabel drawing et sizeWithFont: constrainedToSize: que je ne vois actuellement que sur le simulateur de l'iPhone 4 .UILajouter les mauvais calculs de taille sur l'iPhone
Je suis en train de montrer le texte d'erreur suivant à l'utilisateur: @ « nom d'utilisateur incorrect ou mot de passe » Ce texte se trouve dans une zone d'erreur dynamique qui est construit à partir de trois parties: en haut, centre et bas et donc je calculer la taille de l'étiquette afin que je puisse changer le cadre de l'image d'arrière-plan du centre en conséquence.
Voici un exemple du code de calcul de la taille 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];
Quand je lance le code sur le simulateur iPhone 3 du sizeWithFont: constrainedToSize: méthode retourne une hauteur de 1 ligne et dessine ce texte d'erreur 1 ligne. Lorsque je lance le même code sur le simulateur de l'iPhone 4 sizeWithFont: constrainedToSize: retourne une taille de (170.0, 42.0) qui est nécessaire pour deux lignes mais l'étiquette elle-même est dessinée sur 1 ligne. C'est comme si le code sizeWithFont n'utilisait pas les mêmes logiques du code de rendu.
Depuis la modification du texte d'erreur n'est pas une option :) une idée de comment contourner ce problème ou le résoudre?
Merci à l'avance
ne marche pas semblent être résolus pour moi de toute façon – glogic