Добавление NSAttributedString с разрывом строки возвращает атрибутивную строку с неверным форматом

Я использую NSMutableAttributedString и NSAttributedString для отображения текста метки с двумя разными размерами шрифта. Мой подход:

NSMutableAttributedString *muAtrStr = [[NSMutableAttributedString alloc]initWithString:@"2"];
NSAttributedString *atrStr = [[NSAttributedString alloc]initWithString:@"days" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:8]}];
[muAtrStr appendAttributedString:atrStr];

, который возвращает мне строку Attributed с «2» в размере шрифта 12 и «days» в размере шрифта 8.

Однако, другой сценарий - добавить разрыв строки после 2. Я использую следующий код:

NSMutableAttributedString *muAtrStr = [[NSMutableAttributedString alloc]initWithString:@"2"];
NSAttributedString *atrStr = [[NSAttributedString alloc]initWithString:@"\ndays" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:8]}];
[muAtrStr appendAttributedString:atrStr];

На этот раз строка с атрибутом применяет атрибут к полному тексту. Я получаю атрибутивную строку со шрифтом «2 \ ndays», размер шрифта 8.

24
задан 17.05.2020, 21:22

1 ответ

Попробуйте приведенный ниже код, он работает нормально: -

NSMutableAttributedString *muAtrStr = [[NSMutableAttributedString alloc]initWithString:@"2"];
NSAttributedString *atrStr = [[NSAttributedString alloc]initWithString:@"\ndays" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:8]}];
[muAtrStr appendAttributedString:atrStr];
self.lbl.numberOfLines = 0;
[self.lbl setAttributedText:muAtrStr];

Примечание: - Также установите numberOfLines в 0 для разрешения любого количества строк

39
ответ дан 17.05.2020, 21:23
  • 1
    извините, это didn' t работают также... Мог бы работать на текстовое представление, не работающее на uilabel. – user3404693 17.05.2020, 21:23
  • 2
    да, также uilabel отображает оба строковых i-e 2 & дни в том же шрифте, Никаком изменении – user3404693 17.05.2020, 21:24
  • 3
    с помощью iOS7.1 и устанавливая приписанный текст, поскольку Вы описали. – user3404693 17.05.2020, 21:24
  • 4
    Но в UILabel это отображается и 2 и дни в том же размере шрифта i-e 8. Я хочу отобразиться 2 в 12 размерах шрифта и дни в 8 размерах шрифта. – user3404693 17.05.2020, 21:24
  • 5
    только для " days" текст. 12 размеров шрифта являются значением по умолчанию для " 2" строка. Рабочий прекрасный, когда я don' t используют \n в строке. – user3404693 17.05.2020, 21:24

Теги

Похожие вопросы