当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Optional toolbar(id:content:)用法及代码示例


实例方法

toolbar(id:content:)

使用指定的项目填充工具栏或导航栏,允许用户自定义。

声明

func toolbar<Content>(
    id: String,
    content: () -> Content
) -> some View where Content : CustomizableToolbarContent

参数

id

此工具栏的唯一标识符。

content

表示工具栏内容的内容。

详述

当您希望允许用户自定义工具栏中元素的组件和布局时,请使用此修饰符。工具栏修饰符需要一个工具栏项目的集合,您可以通过提供一个视图集合来提供这些项目,每个视图都包含在 ToolbarItem 中。

下面的示例创建一个表示每个 ToolbarItem 的视图以及一个唯一标识自定义编辑器的工具栏项的 ID:


struct ToolsEditorView: View {
    @State private var text = ""
    @State private var bold = false
    @State private var italic = false
    @State private var fontSize = 12.0


    var displayFont: Font {
        let font = Font.system(
           size: CGFloat(fontSize),
             weight: bold == true ? .bold : .regular)
        return italic == true ? font.italic() : font
    }


    var body: some View {
        TextEditor(text: $text)
            .font(displayFont)
            .toolbar(id: "editingtools") {
                ToolbarItem(
                    id: "sizeSelector", placement: .secondaryAction
                ) {
                    Slider(
                        value: $fontSize,
                        in: 8...120,
                        minimumValueLabel:
                            Text("A").font(.system(size: 8)),
                        maximumValueLabel:
                            Text("A").font(.system(size: 16))
                    ) {
                        Text("Font Size (\(Int(fontSize)))")
                    }
                    .frame(width: 150)
                }
                ToolbarItem(
                    id: "bold", placement: .secondaryAction
                ) {
                    Toggle(isOn: $bold) {
                        Image(systemName: "bold")
                    }
                }
                ToolbarItem(
                    id: "italic", placement: .secondaryAction
                ) {
                    Toggle(isOn: $italic) {
                        Image(systemName: "italic")
                    }
                }
            }
            .navigationTitle("My Note")
    }
}

在 macOS 中,您可以通过使用 Scene/commands(content:) 场景修饰符将 ToolbarCommands 实例添加到场景来启用对工具栏自定义的菜单支持:


@main
struct ToolbarContent_macOSApp: App {
    var body: some Scene {
        WindowGroup {
            ToolsEditorView()
                .frame(maxWidth: .infinity, maxHeight: .infinity)
        }
        .commands {
            ToolbarCommands()
        }
    }
}

当您添加工具栏命令时,系统会在您的应用程序的主菜单中添加一个菜单项,以提供工具栏自定义支持。这是对工具栏上的Control-click 以打开工具栏自定义编辑器的能力的补充。

可用版本

iOS 14.0+, iPadOS 14.0+, macOS 11.0+, Mac Catalyst 14.0+, tvOS 14.0+, watchOS 7.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Optional toolbar(id:content:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。