AttributedString отображается в SwiftUI иначе, чем в AppKit.

У меня странная проблема при рисовании NSAttributedStringsв SwiftUI. По сравнению с отображением в AppKit символы SwiftUI на 1 пункт меньше. Чтобы отобразить строку в SwiftUI, я должен использовать, но не имеет значения, визуализирую ли я представление в draw() из NSView или используйте NSTextFieldчтобы отобразить это. Я должен использовать, так как я также должен использовать цвета CMYK. Используемый шрифт - «The Sans Mono-W8 ExtraBold».

В качестве примера:

SwiftUI-Version находится слева, AppKit - справа.

Кодекс для NSViewRepresentable довольно просто:

      public struct AttrStringView: NSViewRepresentable {
    let attributedString: NSAttributedString
    
    public func makeNSView(context: NSViewRepresentableContext<Self>) -> NSTextField {
        NSTextField()
    }

    public func updateNSView(_ textField: NSTextField, context: Context) {
        textField.attributedStringValue = attributedString
    }
}

И в AppKit код для установки AttributedString прост:

      textField.attributedStringValue = attributedString

Может ли кто-нибудь указать мне на подсказку? Или это ошибка?

1 ответ

Вы явно устанавливаете размер шрифта на стороне SwiftUI или NSViewRepresentable? Размеры по умолчанию могут отличаться. Попробуйте установить одинаковый размер шрифта для обоих.

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