Начиная с iOS 10.3: UIButton игнорирует отрицательный абзац lineSpacing в NSAttributedString

У меня есть UIButton, который на самом деле просто 2 слова, обернутый в 2 строки (позже я установил значение строк в "2"). Я ужесточил lineSpacing по умолчанию, введя отрицательное значение для абзаца lineSpacing (как упрощено и показано ниже).

Начиная с iOS 10.3, кажется, что отрицательное значение теперь игнорируется. Хотя я могу увеличить lineSpacing с положительным значением, я больше не могу ужесточить 2 линии.

Кто-нибудь еще знает, как подтянуть это в UIButton? (Я готов изменить этот контроль... но думал, что я отправлю вопрос).

Большое спасибо всем.

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = -15.0f;
paragraphStyle.alignment = NSTextAlignmentLeft;

NSDictionary * attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                             [UIColor whiteColor], NSStrokeColorAttributeName,
                             [UIColor greenColor], NSForegroundColorAttributeName,
                             @(-2.0), NSStrokeWidthAttributeName,
                             paragraphStyle, NSParagraphStyleAttributeName,
                             nil];
NSMutableAttributedString *buttonTitle = [[NSMutableAttributedString alloc] initWithString:str attributes:attributes];

self.theButton.titleLabel.numberOfLines = 2;
[self.theButton setAttributedTitle:buttonTitle forState:UIControlStateNormal];

редактировать: похоже, это также проблема с UILabel.

1 ответ

Я могу изменить пробел, используя код в iOS 10.2

NSMutableParagraphStyle *paraStyle = [NSMutableParagraphStyle defaultParagraphStyle].mutableCopy;
paraStyle.alignment = NSTextAlignmentCenter;
paraStyle.lineBreakMode = NSLineBreakByCharWrapping;
paraStyle.paragraphSpacing = -8;

[self setAttributedTitle:[[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"test button\n normal", titleString] attributes:@{NSParagraphStyleAttributeName:paraStyle}] forState:UIControlStateNormal];
[self setAttributedTitle:[[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"test button\n selected", titleString] attributes:@{NSParagraphStyleAttributeName:paraStyle}] forState:UIControlStateSelected];

я думаю, может быть, вы можете изменить ParadiseSpace, это работает ~

Другие вопросы по тегам