提问人:noe 提问时间:2/18/2021 最后编辑:noe 更新时间:5/11/2023 访问量:5476
无法在 SwiftUI 的菜单中设置按钮标签的颜色
Cannot set color of Button's Label inside Menu in SwiftUI
问:
如果我在 SwiftUI (iOS) 中创建菜单,我无法设置里面按钮的颜色,例如:
Menu("Actions") {
Button(action: { }) {
Label("Whatever", systemImage: "pencil")
.background(Color.red) // does not work
}
.background(Color.red) // does not work either
.buttonStyle(RedButtonStyle()) // does not work either
}
struct RedButtonStyle: ButtonStyle {
func makeBody(configuration: Configuration) -> some View {
configuration.label.foregroundColor(Color.red)
}
}
如果不是,我使用 ,或者(我知道这一点),它也不起作用。Label
Text
Image
有什么办法吗?
P.S.:还有另一个相关的 SO 问题,但它非常笼统且范围更广。
答:
17赞
George
8/6/2021
#1
现在,在 iOS 15 中,可以通过设置 的角色来实现这一点。文档Button
例:
Menu("Actions") {
Button(role: .destructive, action: { }) {
Label("Whatever", systemImage: "pencil")
}
}
结果:
评论
1赞
noe
2/16/2022
我希望 iOS 14 有一种解决方法,而无需求助于 UIKit。无论如何,谢谢。我真的很讨厌为了克服 SwiftUI 的缺陷,我必须使用更高版本的操作系统本身......
0赞
George
2/16/2022
@noe是的,有时您只需要将 UIKit 用于某些部分即可。我最近在这里有一个问答,我实际上是为了创建一个自定义上下文菜单而制作的。我用 thing 做 Introspect,然后添加一个 .您可能会发现这对于实现 iOS 14 版本的上下文菜单很有用。ScrollView
UIContextMenuInteraction
scrollView.subviews.first!.addInteraction(/* interaction delegate instance */)
0赞
noe
2/16/2022
谢谢你!我会检查一下。
0赞
JAHelia
1/10/2023
我无法将字体设置为红色以外的自定义字体或颜色
1赞
George
1/10/2023
@JAHelia 虽然更多的自定义是件好事,但使用“普通”或红色以外的东西作为破坏性操作将是一个不寻常的用户体验
上一个:如何更改菜单的标签?
评论
Menu
Menu
UIKit
UIViewControllerRepresentable
UiViewRepresentable