SwiftUI-Toolbars

Toolbars

提供对常用命令和控件的即时访问。

系统可能会在应用程序内容的上方或下方显示工具栏,具体取决于平台和上下文。通过将toolbar(content:)视图修饰符应用于应用程序中的视图,将项目添加到工具栏中。您还可以使用视图修饰符配置工具栏。例如,您可以使用工具toolbar(_:for:)修饰符设置工具栏的可见性。

填充工具栏

func toolbar<Content>(content: () -> Content) -> some View
用您提供的视图填充工具栏或导航栏。
func toolbar<Content>(content: () -> Content) -> some View
用指定的项目填充工具栏或导航栏。
struct ToolbarItem
代表可以放置在工具栏或导航栏中的项目的模型。
struct ToolbarItemGroup
代表一组ToolbarItem的模型,可以放置在工具栏或导航栏中。
struct ToolbarItemPlacement
定义工具栏项目位置的结构。
protocol ToolbarContent
符合类型表示可以放置在工具栏中不同位置的项目。
struct ToolbarContentBuilder
从多表达式闭包构造工具栏项集。

填充可自定义的工具栏

func toolbar<Content>(id: String, content: () -> Content) -> some View
用指定的项目填充工具栏或导航栏,允许用户自定义。
protocol CustomizableToolbarContent
符合类型表示可以在可自定义工具栏中放置在不同位置的项目。
struct ToolbarCustomizationBehavior
可自定义工具栏内容的自定义行为。
struct ToolbarCustomizationOptions
影响可自定义工具栏内容的默认自定义行为的选项。

设置工具栏可见性

func toolbar(Visibility, for: ToolbarPlacement...) -> some View
指定由SwiftUI管理的条的可见性。
struct ToolbarPlacement
工具栏的位置。

指定工具栏内容的作用

func toolbarRole(ToolbarRole) -> some View
为填充工具栏的内容配置语义角色。
struct ToolbarRole
填充工具栏的内容的目的。

工具栏样式

func toolbarBackground<S>(S, for: ToolbarPlacement...) -> some View
指定由SwiftUI管理的条形背景的首选形状样式。
func toolbarBackground(Visibility, for: ToolbarPlacement...) -> some View
指定由SwiftUI管理的栏上背景的首选可见性。
func toolbarColorScheme(ColorScheme?, for: ToolbarPlacement...) -> some View
指定由SwiftUI管理的条形图的首选配色方案。
func windowToolbarStyle<S>(S) -> some Scene
设置此场景中定义的工具栏的样式。
protocol WindowToolbarStyle
窗口工具栏的外观和行为规范。

设置工具栏标题菜单

func toolbarTitleMenu<C>(content: () -> C) -> some View
配置工具栏的标题菜单。
struct ToolbarTitleMenu
工具栏的标题菜单。

ToolbarItem

代表可以放置在工具栏或导航栏中的项目的模型。

创建工具栏

init(placement: ToolbarItemPlacement, content: () -> Content)
创建具有指定位置和内容的工具栏项。
当ID为()并且Content符合View时可用。

支持类型

var id: ID
与此实例关联的实体的稳定身份。
当ID符合Hashable和Content符合View时可用。
var id: ObjectIdentifier
与此实例关联的实体的稳定身份。
typealias Body
代表此工具栏内容主体的内容类型。

初始化器

init(id: String, placement: ToolbarItemPlacement, content: () -> Content)
创建具有指定位置和内容的工具栏项,允许用户自定义。
当ID为String且Content符合View时可用。

符合

CustomizableToolbarContent
当ID是String,Content符合View时,符合。
Identifiable
ToolbarContent
当ID是String,Content符合View时,符合。

ToolbarItemGroup

代表一组ToolbarItem的模型,可以放置在工具栏或导航栏中。

创建工具栏项目组

init(placement: ToolbarItemPlacement, content: () -> Content)
创建具有指定位置和内容的工具栏项目组。
init<C, L>(placement: ToolbarItemPlacement, content: () -> C, label: () -> L)
创建一个工具栏项目组,其中包含指定的位置、内容和描述该内容的标签。
当Content符合View时可用。

支持类型

typealias Body
代表此工具栏内容主体的内容类型。
struct LabeledToolbarItemGroupContent
表示具有指定标签的工具栏项目组视图的视图。

符合

ToolbarContent

ToolbarItemPlacement

定义工具栏项目位置的结构。

有两种类型的安置:

  • 语义放置,如principalnavigation,表示要添加的项目的意图。SwiftUI根据此意图及其周围上下文(如当前平台)确定项目的适当位置。

  • 位置放置,如navigation,表示物品的精确放置,通常用于特定平台。

在iOS、iPadOS和macOS中,系统在确定要在工具栏中渲染的项目数量时使用工具栏的可用空间。如果不是所有项目都适合可用空间,则可以创建溢出菜单,其余项目将放在该菜单中。

获得语义放置

static let automatic: ToolbarItemPlacement
系统会自动放置项目,这取决于许多因素,包括平台、大小类别或其他项目的存在。
static let principal: ToolbarItemPlacement
系统将项目放在主项目部分。
static let status: ToolbarItemPlacement
该项目表示当前上下文的状态变化。

为特定行动获得安置

static let primaryAction: ToolbarItemPlacement
该项目代表一个主要操作。
static let secondaryAction: ToolbarItemPlacement
该项目代表次要操作。
static let confirmationAction: ToolbarItemPlacement
该项目表示模态接口的确认操作。
static let cancellationAction: ToolbarItemPlacement
该项表示模态接口的取消操作。
static let destructiveAction: ToolbarItemPlacement
该项代表模态接口的破坏性动作。
static let navigation: ToolbarItemPlacement
该项目代表导航操作。

获得明确的放置

static let navigationBarLeading: ToolbarItemPlacement
将项目放在导航栏的前沿。
static let navigationBarTrailing: ToolbarItemPlacement
将项目放在导航栏的后缘。
static let keyboard: ToolbarItemPlacement
该项目被放置在键盘部分。
static let bottomBar: ToolbarItemPlacement
将项目放在底部工具栏中。

创建位置

init<ID>(id: ID)
创建自定义工具栏项目位置。

ToolbarContentBuilder

从多表达式闭包构造工具栏项集。

构建工具栏内容

static func buildBlock<Content>(Content) -> some ToolbarContent
static func buildBlock<C0, C1>(C0, C1) -> some ToolbarContent
static func buildBlock<C0, C1, C2>(C0, C1, C2) -> some ToolbarContent
static func buildBlock<C0, C1, C2, C3>(C0, C1, C2, C3) -> some ToolbarContent
static func buildBlock<C0, C1, C2, C3, C4>(C0, C1, C2, C3, C4) -> some ToolbarContent
static func buildBlock<C0, C1, C2, C3, C4, C5>(C0, C1, C2, C3, C4, C5) -> some ToolbarContent
static func buildBlock<C0, C1, C2, C3, C4, C5, C6>(C0, C1, C2, C3, C4, C5, C6) -> some ToolbarContent
static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7>(C0, C1, C2, C3, C4, C5, C6, C7) -> some ToolbarContent
static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7, C8>(C0, C1, C2, C3, C4, C5, C6, C7, C8) -> some ToolbarContent
static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9) -> some ToolbarContent

构建可定制的工具栏内容

static func buildBlock<Content>(Content) -> some CustomizableToolbarContent
static func buildBlock<C0, C1>(C0, C1) -> some CustomizableToolbarContent
static func buildBlock<C0, C1, C2>(C0, C1, C2) -> some CustomizableToolbarContent
static func buildBlock<C0, C1, C2, C3>(C0, C1, C2, C3) -> some CustomizableToolbarContent
static func buildBlock<C0, C1, C2, C3, C4>(C0, C1, C2, C3, C4) -> some CustomizableToolbarContent
static func buildBlock<C0, C1, C2, C3, C4, C5>(C0, C1, C2, C3, C4, C5) -> some CustomizableToolbarContent
static func buildBlock<C0, C1, C2, C3, C4, C5, C6>(C0, C1, C2, C3, C4, C5, C6) -> some CustomizableToolbarContent
static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7>(C0, C1, C2, C3, C4, C5, C6, C7) -> some CustomizableToolbarContent
static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7, C8>(C0, C1, C2, C3, C4, C5, C6, C7, C8) -> some CustomizableToolbarContent
static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9) -> some CustomizableToolbarContent

构建条件工具栏内容

static func buildIf<Content>(Content?) -> Content?
static func buildIf<Content>(Content?) -> Content?
static func buildEither<TrueContent, FalseContent>(first: TrueContent) -> _ConditionalContent<TrueContent, FalseContent>
static func buildEither<TrueContent, FalseContent>(first: TrueContent) -> _ConditionalContent<TrueContent, FalseContent>
static func buildEither<TrueContent, FalseContent>(second: FalseContent) -> _ConditionalContent<TrueContent, FalseContent>
static func buildEither<TrueContent, FalseContent>(second: FalseContent) -> _ConditionalContent<TrueContent, FalseContent>
static func buildLimitedAvailability<Content>(Content) -> some ToolbarContent
static func buildLimitedAvailability<Content>(Content) -> some CustomizableToolbarContent

类型方法

static func buildExpression<Content>(Content) -> Content
在构建器中构建一个表达式。
static func buildExpression<Content>(Content) -> Content
在构建器中构建一个表达式。

ToolbarCustomizationBehavior

可自定义工具栏内容的自定义行为。

可定制的工具栏内容支持不同类型的自定义行为。例如,一些可自定义的内容可能不会被用户删除。一些内容可能会被放置在整体支持自定义的工具栏中,但不适用于该特定内容。

将此类型与customizationBehavior(_:)修饰符一起使用。

类型属性

static var `default`: ToolbarCustomizationBehavior
默认自定义行为。
static var disabled: ToolbarCustomizationBehavior
禁用的自定义行为。
static var reorderable: ToolbarCustomizationBehavior
可重新排序的自定义行为。

ToolbarCustomizationOptions

影响可自定义工具栏内容的默认自定义行为的选项。

将此类型与CustomizableContent/defaultCustomization(_:options)修饰符结合使用。

初始化器

init(rawValue: Int)
从给定的原始值创建一个新的选项集。

实例属性

var rawValue: Int
原始类型的相应值。

类型别名

typealias ArrayLiteralElement
数组文字的元素类型。
typealias Element
选项集的元素类型。
typealias RawValue
可用于表示符合类型的所有值的原始类型。

类型属性

static var alwaysAvailable: ToolbarCustomizationOptions
将默认的可自定义工具栏内容配置为始终存在于工具栏中。

ToolbarPlacement

工具栏的位置。

使用此类型与toolbarBackground(_:for:)toolbar(_:for:)等修饰符结合使用,自定义SwiftUI管理的不同条的外观。并非所有酒吧都支持所有类型的定制。

请参阅Toolbar,了解您可以将自己的控件放入这些工具栏的不同区域。

获得安置

static var automatic: ToolbarPlacement
主要工具栏。
static var bottomBar: ToolbarPlacement
应用程序的底部工具栏。
static var navigationBar: ToolbarPlacement
应用程序的导航栏。
static var tabBar: ToolbarPlacement
应用程序的选项卡栏。
static var windowToolbar: ToolbarPlacement
应用程序的窗口工具栏。

创建位置

init<ID>(id: ID)
创建自定义工具栏位置。

ToolbarRole

填充工具栏的内容的目的。

工具栏角色提供了填充工具栏的内容目的的描述。内容的目的会影响工具栏渲染内容的方式。例如,browser将自动对齐iPadOS中工具栏的标题。

将此类型提供给toolbarRole(_:)修饰符:

ContentView()
    .navigationTitle("Browser")
    .toolbarRole(.browser)
    .toolbar {
        ToolbarItem(placement: .primaryAction) {
            AddButton()
        }
     }

特定行为的角色

static var browser: ToolbarRole
浏览器角色。
static var editor: ToolbarRole
编辑角色。
static var navigationStack: ToolbarRole
navigationStack角色。
自动角色
static var automatic: ToolbarRole
自动角色。

ToolbarTitleMenu

工具栏的标题菜单。

标题菜单表示可以在应用程序的工具栏或导航标题所代表的内容上完成的常见功能。此菜单可以从应用程序的命令(如saveprintItem中填充。

ContentView()
    .toolbar {
        ToolbarTitleMenu()
    }

您可以提供自己的一组操作来覆盖此行为。

ContentView()
    .toolbar {
        ToolbarTitleMenu {
            DuplicateButton()
            PrintButton()
        }
    }

在iOS和iPadOS中,这将构建一个菜单,可以通过点击应用程序导航栏中的导航标题来显示。

初始化器

init()
创建一个工具栏标题菜单,从应用程序命令中推断操作。
init(content: () -> Content)
创建工具栏标题菜单。

类型别名

typealias Body
代表此工具栏内容主体的内容类型。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容