macos - SwiftUI NavigationView 与 macOS 上的窗口内混合
问题描述
我正在尝试在 macOS 的 SwiftUI 中构建类似于 Maps.app 的 UI。我无法为工具栏和侧边栏应用窗口内混合模式。该应用程序的代码大致是这样的:
struct ContentView: View {
@State private var region = MKCoordinateRegion(...)
var body: some View {
NavigationView {
Sidebar()
Map(coordinateRegion: $region)
}
.navigationTitle("New York, NY")
}
}
作为参考,这是 Maps.app 的屏幕截图。可能很难看到,但是通过半透明的工具栏和侧边栏可以看到 Map 组件:
使用上面的代码,我得到以下结果(从github.com/jordansinger/maps-macos-swiftui-sample修改)。请注意,工具栏是纯白色的,侧边栏使用窗口后混合模式:
如果我放下NavigationView
组件并.ignoresSafeArea()
在Map
组件上设置,我会让工具栏变得半透明,但工具栏会占据窗口的全宽,而不是在侧边栏的边缘切割。使用这样的代码:
struct ContentView: View {
@State private var region = MKCoordinateRegion(...)
var body: some View {
HStack {
Sidebar()
Map(coordinateRegion: $region)
.ignoresSafeArea()
}
.navigationTitle("New York, NY")
}
}
我得到以下结果。请注意,工具栏现在是半透明的:
出于特定目的,NavigationView
应用程序中不需要,因为没有导航。我纯粹使用它来实现侧边栏和工具栏组合的正确外观,没有NavigationView
.
所以,问题是是否可以NavigationView
使用窗口内混合模式或完全替换它(但所需的外观类似于我们在 Maps.app 中的外观)。
解决方案
推荐阅读
- excel - 子程序在调用时不起作用,仅在独立执行时
- mysql - mysql select查询根据where条件获取外键
- python - 动态创建自适应卡片机器人框架 azure
- python - 如何在 makefile 中创建 virtualenv 变量
- macos - 如何在 MacOS 上将 fputs 定向到 x86 中的标准输出
- image - 通过 oc 在 OpenShift 中显示图像标签
- mysql - 在 SQL 选择查询中使用 If else
- kubernetes - 带有条件的 Helm 范围以生成键列表
- bash - sed 命令在 shell 脚本中不起作用,而它们通过 ssh 一次执行一个
- javascript - 使用动态导入时遇到错误“错误:找不到模块”(React.Suspense)