iOS NSAttributedString auf UIButton

Ich benutzeiOS 6Zugeschriebene Zeichenfolgen sollten also einfach zu verwenden sein, oder? Nun ... nicht so sehr.

Was ich machen will; was ich vorhabe zu tun:

Verwenden einer benutzerdefinierten Unterklasse vonUIButton (Es macht nichts Brauches antitleLabel), Ich hätte gerne einen mehrzeiligen, zugewiesenen Titel, der lautet:

Alle Großbuchstaben (mir ist klar, dass das nicht Teil der Attribute ist) in der ersten ZeileFett geschrieben in der ersten ZeileUnterstrichen in der ersten Zeile"Normales" Gewicht in der zweiten ZeileIn der zweiten Zeile nicht unterstrichenIn beiden Linien zentriert

Bisher konnte ich # 1 bis 5 erreichen (zumindest dachte ich, dass dies der Fall ist, aber das aktuelle Testen liefert Fehler mit mehrzeiligem Text), aber als ich versuchte, etwas (irgendetwas!) Zu erreichen Wenn der Text zentriert werden soll, stürzt meine App immer wieder ab. Wenn ich versuche, alle 6 Elemente zum Laufen zu bringen (durch verschiedene Methoden), erhalte ich den folgenden Absturz / Fehler:

Terminating app due to uncaught exception 
'NSInternalInconsistencyException', reason: 
'NSAttributedString invalid for autoresizing, 
it must have a single spanning paragraph style
(or none) with a non-wrapping lineBreakMode.'

Basierend auf dem, was ich versucht habe, scheint es, dass ich eine der folgenden Optionen haben kann, aber nicht beide:

Ein mehrzeiliges, zentriertes EtikettEin zugeschriebenes Etikett

Ich kann mit dem einen oder anderen leben, wenn ichMuss, aber ich kann nicht glauben, dass ich kein ziemlich einfaches Konzept haben kann.

Kann mir bitte jemand sagen, was ich falsch gemacht habe?

Hier ist die letzte Iteration des Codes, den ich versuche:

NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setAlignment:NSTextAlignmentCenter];
[style setLineBreakMode:NSLineBreakByWordWrapping];

UIFont *font1 = [UIFont fontWithName:@"HelveticaNeue-Medium" size:20.0f];
UIFont *font2 = [UIFont fontWithName:@"HelveticaNeue-Light"  size:20.0f];
NSDictionary *dict1 = @{NSUnderlineStyleAttributeName:@(NSUnderlineStyleSingle),  
                        NSFontAttributeName:font1};
NSDictionary *dict2 = @{NSUnderlineStyleAttributeName:@(NSUnderlineStyleNone),    
                        NSFontAttributeName:font2};

NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] init];
[attString appendAttributedString:[[NSAttributedString alloc] initWithString:@"LINE 1\n"    attributes:dict1]];
[attString appendAttributedString:[[NSAttributedString alloc] initWithString:@"line 2"      attributes:dict2]];
[[self buttonToStyle] setAttributedTitle:attString forState:UIControlStateNormal];
[[[self buttonToStyle] titleLabel] setNumberOfLines:0];
[[[self buttonToStyle] titleLabel] setLineBreakMode:NSLineBreakByWordWrapping];

Antworten auf die Frage(2)

Ihre Antwort auf die Frage