Frage

Ich bin Einstellung meines alte apps iPhone 4 den Simulator zur Zeit mit und ich kann über ein sehr seltsames Verhalten mit UILabel Zeichnung und sizeWithFont: constrainedToSize:., Dass ich zur Zeit nur auf dem iPhone 4 Simulator siehe

Ich versuche, den folgenden Fehlertext an den Benutzer zu zeigen: @ „Falscher Benutzername oder Passwort“ Dieser Text befindet sich innerhalb einer dynamischen Fehlerfeld, das aus drei Teilen aufgebaut ist:. Oben, mittig und unten und damit berechne ich die Größe des Etiketts, damit ich entsprechend den Mittelpunkt Hintergrund Bildrahmen ändern

Hier ist ein Beispiel für die Berechnung Code UILabel Größe:

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];

Wenn ich den Code auf dem iPhone 3 Simulator der sizeWithFont laufen: constrainedToSize: Methode gibt eine Höhe von 1 Zeile und zieht diesen Fehlertext auf 1 Zeile. constrainedToSize: Wenn ich den gleichen Code auf dem iPhone 4 Simulator sizeWithFont laufen gibt eine Größe von (170,0, 42,0), die für zwei Zeilen benötigt wird, sondern kennzeichnet sich auf 1 Linie gezogen wird. Es ist, als ob der sizeWithFont Code nicht die gleiche Logik des Rendering-Code zu verwenden ist.

Da den Fehlertext zu ändern ist keine Option :) eine Ahnung, wie zu umgehen dieses Problem oder es lösen?

Vielen Dank im Voraus

War es hilfreich?

Lösung

Ich habe das gleiche Problem bekommt, mit der gleichen Schriftart. Ich habe keine Möglichkeit, vorherzusagen, wann sie auftreten, und es scheint nie mehr als genau eine Zeile zusätzliche gefunden. Es passiert auf dem Gerät genau wie auf dem Simulator. Es geschieht in allen iOS 4.0, 4.0.1 und 4.0.2. Ich habe noch nicht auf dem 4.1-Simulator geprüft.

Schließlich arbeitete ich um von Hand die Orte der Feststellung, es aufgetreten ist, und an diesen Stellen eine Zeilenhöhe subtrahiert wird. Wenn wir auf 4.1 aktualisieren wir überprüfen, um zu sehen, ob dieses Verhalten andauert.

Andere Tipps

bemerkte ich dieses Problem. Auch bemerkt, dass, wenn das iPhone 4, ein Leerzeichen verwenden, die in einer Textzeichenfolge enthalten ist, berechnet als 4 Punkte breit, aber wenn Sie die Breite eines leeren Raum, der von sich selbst zu berechnen, als 5pts breit berechnet .... ( mit ArialMT, 14pt)

Nach diesem Fehler an Apple über ein Jahr einreichen vor mir eine Email von ihnen sagen, das Problem habe, soll auf iOS5 Beta aufgelöst wird 1

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top