Wirklich nah Linien mit NSAttributedString?
Ich will zwei Zeilen text erscheinen wirklich dicht zusammen (kleiner Zeilenabstand) für einen button. Ich habe den folgenden code:
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"50 WPM"];
NSMutableParagraphStyle *paragrapStyle = [[NSMutableParagraphStyle alloc] init];
paragrapStyle.alignment = NSTextAlignmentCenter;
paragrapStyle.lineSpacing = -10;
[string addAttribute:NSParagraphStyleAttributeName value:paragrapStyle range:NSMakeRange(0, string.length)];
UIFont *font1 = [UIFont systemFontOfSize:22.0];
[string addAttribute:NSFontAttributeName value:font1 range:NSMakeRange(0, string.length - 4)];
UIFont *font = [UIFont systemFontOfSize:15.0];
[string addAttribute:NSFontAttributeName value:font range:NSMakeRange(string.length - 3, 3)];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0, string.length)];
[self.button setAttributedTitle:string forState:UIControlStateNormal];
Aber als linespacing nicht negativ sein kann, ist es nicht annähernd so nah, wie ich möchte, es zu werden. Es sieht wie folgt aus:
Gibt es irgendeine Möglichkeit, um Sie näher?
- Haben Sie versucht, die Anpassung der Absatz-Formatvorlage ist
paragraphSpacing
undparagraphSpacingBefore
Eigenschaften? - Ich habe versucht, unter
paragraphStyle.lineSpacing = -10;
setzen diese Attribute aufparagrapStyle
auf 0 (sowie -10 Nachwort) und hatten keine nennenswerte Auswirkung. - die Verwendung von negativen Wert für den Zeilenabstand als pro-apple-doc. Versuchen Sie so etwas wie (0.0000001).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, wenn man ein Attribut string dann sollte alles möglich sein. 🙂 Du musst halt schauen, mehr.
Versuchen
Werden Sie erkennen, daß maximumLineHeight ist nicht maximumLineSpacing. ^^
Das ist zum Beispiel mit setMaximumLineHeight:12];
masksToBounds
oder fügen Sie ein baseline-Anpassung oder übersetzung-auch verwandeln?Ich würde vorschlagen, Lesen Sie auf TextKit, die eingeführt wurde in iOS7. Ich habe nicht viel Erfahrung, aber ich weiß, dass es gibt Ihnen eine Menge von Möglichkeiten, wenn es um die Zuteilung Ihrer Texte.
In Swift 3, dies können Sie erreichen durch :
Halten die lineSpacing = 0. Sie können einstellen, dass das maximumLineHeight, um es näher oder erhöhen Sie den Abstand.
Hier eine kleine Erweiterung in Swift3 unterstützt, die die negativen lineSpacing
How über das erstellen von Unterklassen
UIButton
, und fügen Sie 2UILabels
um die Schaltflächen anzuzeigen, die nahe beieinander. Erstellen von Eigenschaften für die Etiketten und legen Sie approrpietly:Das einzige problem dieser Methode ist, Sie muss um die Farbe des Textes, wenn sich der Zustand ändert sich.