Размер шрифта быстрой замены в NSMutableAttributedString

У меня есть некоторые атрибуты:

var myAttributeMainText = [ NSFontAttributeName: UIFont(name: "Arial", size: 24.0)! ]
var myAttributeUpperText = [ NSBaselineOffsetAttributeName: 8, NSFontAttributeName: UIFont(name: "Arial", size: 14.0)! ]

Я использую эти атрибуты в текстовой метке

var allMurableAttributedString = NSMutableAttributedString(string: "")
var userAttribute = NSMutableAttributedString(string: "USER", attributes: myAttributeMainText)
var newAttribute = NSMutableAttributedString(string: "NEW", attributes: myAttributeUpperText)
allMurableAttributedString.appendAttributedString(userAttribute)
allMurableAttributedString.appendAttributedString(newAttribute)

результат

Затем я добавляю эти атрибуты в CoreData allMurableAttributedString и получаю что-то вроде этого:

USER{
    NSFont = "<UICTFont: 0x79feec20> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 0.00pt";
}

NEW{
    NSBaselineOffset = 6;
    NSFont = "<UICTFont: 0x79fed8e0> font-family: \"Thonburi\"; font-weight: normal; font-style: normal; font-size: 10.00pt";
}

Как я могу изменить размер шрифта моего атрибута allMurableAttributedString, когда я его вызываю?


person Skie    schedule 22.04.2016    source источник
comment
Рассматривали ли вы возможность повторного применения нужных шрифтов к правильным областям текста? То есть построить новую строку с атрибутами, используя только текст исходной строки с атрибутами? В этом случае это может быть проще, чем пытаться удалить, а затем добавить атрибуты...   -  person JRG-Developer    schedule 23.04.2016
comment
Вы должны перечислить NSFontAttributeName вашего NSMutableAttributedString, а затем изменить его значение, например: stackoverflow.com/questions/36064762/   -  person Larme    schedule 23.04.2016


Ответы (1)


чтобы удалить настройки шрифта из NSMutableAttributedString, я использовал этот код

allMurableAttributedString.removeAttribute(NSFontAttributeName, range: NSMakeRange(0, 7))

затем я могу добавить новые атрибуты

allMurableAttributedString.setAttributes(myAttributeMainText, range: NSMakeRange(0, 4))
allMurableAttributedString.setAttributes(myAttributeUpperText, range: NSMakeRange(4, 3))
person Skie    schedule 24.04.2016
comment
Поскольку атрибуты хранятся в NSDictionary для каждого диапазона, он может иметь только одно значение для каждого ключа. Таким образом, вам не нужно удалять ключ/значение NSFontAttributeName, если впоследствии вы устанавливаете для него новое значение. - person Larme; 25.04.2016