Я использую iOS 6, поэтому атрибутные строки должны быть просты в использовании, не так ли? Ну... не так много.
Что я хочу сделать:
Использование пользовательского подкласса UIButton
(он не делает ничего пользовательского для titleLabel
), я хотел бы иметь многострочный отнесенный заголовок, который:
- Все кепки (я понимаю, что не часть атрибутов) в первой строке
- Полужирный в первой строке
- Подчеркнуто в первой строке
- "Нормальный" вес во второй строке
- Без подчеркивания на второй строке
- Центрируется на обеих линиях
Я смог получить № 1 по 5 (по крайней мере, я думал, что сделал, но текущее тестирование приводит к ошибкам с многострочным текстом), но когда я пытался что-то сделать (что угодно!), чтобы чтобы текст был центрирован, мое приложение продолжает сбой. Когда я пытаюсь получить все 6 элементов, работающих (с помощью различных методов), я получаю следующий сбой/ошибку:
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.'
На основании того, что я пробовал, кажется, что у меня может быть один из следующих параметров, но не оба:
- Многострочная, центрированная метка
- Приписываемая метка
Я могу жить с тем или другим, если я должен, но я не могу поверить, что я не могу иметь то, что кажется довольно простой концепцией.
Может кто-нибудь, пожалуйста, скажите мне, в чем я ошибаюсь?
Здесь последняя итерация кода, который я пытаюсь:
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];