在 SwiftUI 中更改 GroupBox 背景颜色
Posted
技术标签:
【中文标题】在 SwiftUI 中更改 GroupBox 背景颜色【英文标题】:Change GroupBox background color in SwiftUI 【发布时间】:2020-10-09 09:03:29 【问题描述】:如何在 SwiftUI 中更改 GroupBox 视图的默认灰色背景颜色?
我尝试添加背景修饰符,但这只会改变框下方的白色背景(见截图)。
GroupBox(label: Text("Label"), content:
Text("Content")
)
.background(Color.blue)
【问题讨论】:
我认为现在没有办法,但这可能会对您有所帮助:facebook.com/349275022095690/posts/… 【参考方案1】:这是默认的组框样式。您可以使用自定义样式创建所需的任何组框。
这是一个例子。使用 Xcode 12 / ios 14 测试。
struct DemoGroupBox: View
var body: some View
GroupBox(label: Text("Label"), content:
Text("Content")
)
.groupBoxStyle(TransparentGroupBox())
.padding()
struct TransparentGroupBox: GroupBoxStyle
func makeBody(configuration: Configuration) -> some View
configuration.content
.frame(maxWidth: .infinity)
.padding()
.background(RoundedRectangle(cornerRadius: 8).fill(Color.blue))
.overlay(configuration.label.padding(.leading, 4), alignment: .topLeading)
【讨论】:
这很有用,但我不认为它算作“答案”,因为你必须自己布置标签。在开头加上“你不能”,这才是真正的答案。【参考方案2】:尝试使用任何你想要的覆盖修饰符。如果在叠加层中使用 .fill,它会改变背景颜色,但也会覆盖底层视图。
我使用了描边清晰的 RoundedRectangle 视图,而不是 .fill。这是一种设置 GroupBox 样式的简单方法。
.overlay(
RoundedRectangle(cornerRadius: 15)
.stroke(Color.purple, lineWidth: 5)
)
【讨论】:
【参考方案3】:简短回答:SwiftUI 目前不正确支持 :(
更长的答案:您可以创建一个自定义GroupBoxStyle
(请参阅example),这将允许您更改背景......但代价是必须手动布局内容(这有点违背目的) .
【讨论】:
你是说其他两个已经社区验证的答案不正确?如果有,为什么不满足要求? @JeremyCaney 我想向任何寻求“一目了然”解决方案的人明确表示,不可能简单地更改背景颜色。提议的“解决方案”改变了背景颜色 - 是的 - 但迫使您必须设置角半径,标签布局......使其更有效(更少的代码行)简单地制作一个自定义组件,因为它真的没有不再是标准的 SwiftUI 组件。 示例:VStack() Text("Label").frame(maxWidth: .infinity, alignment: .leading).padding(.leading, 8) Text("Label") .padding().background(Color.blue).cornerRadius(15)
请edit将该信息添加到您的答案中。 “不可能”本身只是一个没有解释的评论。以上是关于在 SwiftUI 中更改 GroupBox 背景颜色的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 SwiftUI 中更改列表的背景颜色? 2020 (iOS 14)
SwiftUI 更改内联 navigationBarTitleDisplayMode 的导航栏背景颜色