Как получить UIFont из AttributedString run.font
У меня есть следующий код в качестве расширения для AttributedString:
func setBold() -> AttributedString {
var newAS = self
for run in runs {
if let font = run.font { newAS[run.range].font = font.bold() }
else { // assume NSFont
let uiFont = run.font ?? UIFont()
newAS[run.range].font = uiFont.bold()
}
}
return newAS
}
И это прекрасно работает, но я действительно не понимаю, почему run.font может быть нулевым в строке после
for run in runs {
и
run.font ?? UIFont()
возвращает UIFont, который хранится в строке AttributeContainer, а не в UIFont(). Кто-нибудь может объяснить, что происходит? Кстати, у меня есть расширение UIFont с функцией жирного шрифта (), которая здесь не показана.
Я случайно наткнулся на это, пытаясь извлечь CTFont (UIFont) из атрибутов, и я доволен, но удивлен, что это работает.