2012-03-26 15 views
1

fand ich ein seltsames Verhalten, wenn sie mit UIButton mit großer Schriftgröße zu tun:abgeschnitten kursiven Text in UIButton?

My iPad Anwendung benötigen präsentiere diese Art von UIButton und ich fand, dass, wenn ich italic Eigenschaft auf der großen Schrift bemessen UIButton gelten, der Text abgeschnitten aussieht wie unten: screenshot

das ist seltsam, wie meine UIButton richtig zentriert und groß genug ist. sizeToFit hilft nicht. Ich habe versucht, melden Sie sich zu setzen, mehr zu wissen, und es scheint, dass die innere Größe des UILabel der Taste zu klein ist:

NSLog(@"Button width : %.1f, text width : %.1f", button.frame.size.width, button.titleLabel.frame.size.width); 
[button.titleLabel sizeToFit]; 
NSLog(@"Button width : %.1f, text width : %.1f", button.frame.size.width, button.titleLabel.frame.size.width); 

das gibt mir:

Knopf Breite: 710,3, Text Breite: 518,0

Knopf Breite: 710,3, Textbreite: 518,0

es das gleiche denken direkt in IB tut, wenn mehr Anwendung als 150 px Schriftgröße auf einer kursiv formatierten UIButton. gibt es eine Möglichkeit, es zu beheben, oder ist es ein SDK-Fehler?

+0

warum nicht einfach die Größe der Textlabel erhöhen oder ein benutzerdefiniertes Etikett als Unteransicht der Schaltfläche hinzufügen? –

+0

es funktioniert nicht. das einzige, was ich gefunden habe, um zu arbeiten, ist, ein Leerzeichen am Ende hinzuzufügen, aber es ist seltsam, das tun zu müssen – Diwann

+0

Siehe meine Antwort hier: http://stackoverflow.com/questions/6624447/uibutton-italic-font-clipping/21419202 # 21419202 –

Antwort

0

Ich denke, es ist eine Kombination der großen Schriftgröße (relativ zur Schaltfläche/Label-Größe). Wenn Sie ein Leerzeichen hinzufügen, vergrößert sich die Größe von UILabel.

Versuchen Sie [button.titleLabel adjustsFontSizeToFitWidth]. Dies wird definitiv die Schriftgröße reduzieren (wenn sie für die gegebene Rahmengröße zu groß ist), wird aber sicherstellen, dass nichts von dem Charakter abgehackt wird.

+0

seltsam, adjustFontSizeToFitWidth tut nichts ... – Diwann

1

Sie können den Titel der Schaltfläche wie folgt

[button setTitle:@"2 " forState:UIControlStateNormal/Highlighted/Selected]; 

Einstellung ausprobieren oder das gleiche tun mit Ihrem Viewcontroller verbunden, um die .xib-Datei. Danach haben Sie die Randeinsätze der Titel der Schaltfläche festlegen, die von der entsprechenden .xib-Datei durchgeführt werden kann oder wie folgt vorgehen:

[button setTitleEdgeInsets:UIEdgeInsetsMake(0,spacingFromLeft, 0, 0)]; 

Der zweite Schritt, dass der Text gewährleisten, In diesem Fall bleibt die Kette "2" in Richtung Mitte ausgerichtet. Daher können Sie im leftSpacing-Parameter der Methode UIEdgeInsetsMake() die Breite entsprechend Ihren Anforderungen festlegen, um sie auf das Zentrum auszurichten.

Ich hatte auch das gleiche Problem und adoptierte diese Lösung, die vielleicht nicht die beste oder richtige Herangehensweise ist, aber es hat sicherlich für mich funktioniert.

+0

Ein einfacherer Ansatz könnte 'setTitle: @" 2 "' :) –

Verwandte Themen