为什么在iOS 26的工具栏中,Menu的 .glassEffect着色没有生效?

移动开发 2026-07-09

这正是我想要实现的效果(来自手机应用,照片应用中也有类似的)

在此输入图片描述 在此输入图片描述

我在工具栏里有一个标准的SwiftUI Menu,并应用了玻璃质感来表示筛选器处于活跃状态:

Menu {
    // …filter options
} label: {
    Label("Filter", systemImage: "line.3.horizontal.decrease")
}
.glassEffect(.regular.tint(.accentColor).interactive())

玻璃效果根本没有渲染出来,也没有任何着色。按钮看起来完全没有样式。

如果把标签从Label改成Image,玻璃效果就会出现,但呈现为一个拉伸的椭圆形按钮。

我也尝试了其他几种组合: 在此输入图片描述

在苹果版本中,悬停时(iPad)高亮与着色本身对齐(见上面的第二张图片),而不是像上面列表中的示例3那样在外部对齐:

在此输入图片描述

有没有办法让菜单触发项的内嵌着色看起来和手机应用的示例一样?

解决方案

不同的工具栏放置位置会带来不同的默认效果。

看起来放置在 .confirmationAction 时默认会给出以强调色为tint的效果。甚至不需要应用 .glassEffect

NavigationStack {
    Text("Main content")
        .toolbar {
            ToolbarItem(placement: .confirmationAction) {
                Menu {
                    // ...filter options
                } label: {
                    Label("Filter", systemImage: "line.3.horizontal.decrease")
                }
                // .glassEffect(.regular.tint(.accentColor).interactive())
            }
        }
}

屏幕截图

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章