Swift-如何在文本编辑器(如notes应用程序)中获取文本格式?迅捷

Swift-如何在文本编辑器(如notes应用程序)中获取文本格式?迅捷,swift,text,swiftui,Swift,Text,Swiftui,我目前有一个文本编辑器,我希望能够在notes应用程序中添加文本格式,如下所示: 我试过使用UITextView.allowEditingTextAttributes=true,但似乎不起作用 任何想法都将受到高度赞赏。 :)您可以创建一个自定义的TextView UIViewRepresentable,并将AllowEditingTextAttributes设置为true: 创建一个名为TextView.Swift的新Swift文件 import SwiftUI struct TextVie

我目前有一个文本编辑器,我希望能够在notes应用程序中添加文本格式,如下所示:

我试过使用
UITextView.allowEditingTextAttributes=true
,但似乎不起作用

任何想法都将受到高度赞赏。
:)

您可以创建一个自定义的TextView UIViewRepresentable,并将AllowEditingTextAttributes设置为true:

创建一个名为TextView.Swift的新Swift文件

import SwiftUI
struct TextView: UIViewRepresentable {
    
    @Binding var attributedText: NSMutableAttributedString
    @State var allowsEditingTextAttributes: Bool = false
    @State var font: UIFont?

    func makeUIView(context: Context) -> UITextView {
        UITextView()
    }

    func updateUIView(_ uiView: UITextView, context: Context) {
        uiView.attributedText = attributedText
        uiView.allowsEditingTextAttributes = allowsEditingTextAttributes
        uiView.font = font
    }
}

然后,您可以将其添加到内容视图:

import SwiftUI

struct ContentView: View {
    @State var attributedText = NSMutableAttributedString(string: "")
    var body: some View {
        TextView(attributedText: $attributedText, allowsEditingTextAttributes: true, font: .systemFont(ofSize: 32))
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

这是否回答了您的问题?非常感谢你!这工作做得很好!一个简单的问题,我希望这个文本视图是包容性的,所以我正在大量研究可访问性,如果它是SwiftUI,如何使字体变成.body?标准字体非常小。你也可以在键盘上添加一个工具栏,并提供两个按钮使所选字体变小或变大,但我认为这会使问题变得过于宽泛。要获得可访问性,您只需传递
。preferredFont(forTextStyle:.body)
。adjustsFontForContentSizeCategory=true
有关其他详细信息,请检查此项