iOS NSAttributedString na UIButton

używamiOS 6, więc przypisane ciągi powinny być łatwe w użyciu, prawda? Cóż ... nie tak bardzo.

Co chcę robić:

Korzystanie z niestandardowej podklasyUIButton (nie robi niczego niestandardowegotitleLabel), Chciałbym mieć wielo-liniowy, przypisany tytuł, który jest:

Wszystkie czapki (zdaję sobie sprawę, że to nie jest część atrybutów) w pierwszej liniiPogrubiony w pierwszej liniiPodkreślone w pierwszej linii„Normalna” waga w drugiej liniiNie podkreślone w drugiej liniiWyśrodkowany na obu liniach

Do tej pory udało mi się uzyskać liczby od 1 do 5 (przynajmniej pomyślałem, że to zrobiłem, ale obecne testy powodują błędy w tekście wielowierszowym), ale kiedy próbowałem coś zrobić (cokolwiek!) tekst, który ma być wyśrodkowany, moja aplikacja ulega awarii. Gdy próbuję uzyskać wszystkie 6 elementów (za pomocą różnych metod), otrzymuję następujący błąd / błąd:

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.'

Na podstawie tego, co próbowałem, wydaje się, że mogę mieć jedną z następujących opcji, ale nie obie:

Wielowierszowa, wyśrodkowana etykietaPrzypisana etykieta

Mogę żyć z jednym lub drugim, jeśli jamusi, ale nie mogę uwierzyć, że nie mogę mieć tego, co wydaje się być dość prostym pojęciem.

Czy ktoś może mi powiedzieć, co się stało?

Oto ostatnia iteracja kodu, którą próbuję:

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

questionAnswers(2)

yourAnswerToTheQuestion