Данные в AttributedString с атрибутами шрифта Swift

#swift #nsattributedstring

#swift #nsattributedstring

Вопрос:

У меня есть RTF-файл, с помощью которого я смог получить содержимое в виде данных (я хочу, чтобы оно было в Data, чтобы использовать его в другом месте кода). Тем не менее, я хотел бы добавить стиль к AttributedString как шрифт, прежде чем присваивать label . Я понял, как применить эти атрибуты в приведенном ниже коде. Пожалуйста, посоветуйте, как я могу добиться того же. Вот мой код

 let rtfData = getRTFData()
guard let data = rtfData else {
        return
    }
if let attributedString = try? NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.rtf], documentAttributes: nil) {
        myLabel.attributedText = attributedString
 }
 

Здесь я хотел добавить атрибуты в AttributedString, такие как
let boldAttributes: [NSAttributedString.Key: Any] = [.font: UIFont.boldSystemFont(ofSize: 14)] и примените эти атрибуты к attributedText

Комментарии:

1. Вы хотите отказаться от исходных атрибутов (шрифта) или только сделать шрифт жирным и изменить его размер?

2. я просто хочу сделать шрифт жирным и изменить его размер

Ответ №1:

Если вы хотите добавить атрибут шрифта к существующим атрибутам, этот должен работать:

 if let attributedString = try? NSMutableAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.rtf], documentAttributes: nil) {
   var attrs = attributedString.attributes(at: 0, effectiveRange: nil)
   attrs[NSAttributedString.Key.font] = UIFont.boldSystemFont(ofSize: 14)
   attributedString.setAttributes(attrs, range: NSRange(location: 0, length: attributedString.length))
   myLabel.attributedText = attributedString
}