【发布时间】:2021-12-04 12:22:37
【问题描述】:
我想创建一个ViewModifier,将其应用于VStack 时,它的样式看起来像Form 内的List,如下图所示。我有多个自定义场景,其中Lists 的行为不像我需要的那样,这是我需要这个的原因。
为了重新创建我曾经遵循代码的图像(我实际上使用了TextFields,但在示例中Texts 会这样做)
Form {
Section {
List {
Text("Group name")
Text("Group hashtags")
Text("Group description")
}
}
}
我知道如何为特定视图创建修饰符,但我不知道如何检索 VStack 中的内部视图列表以处理它们。一旦我可以检索到它们,我需要为整个内容应用一个前导填充,并在所有视图之间放置一个分隔线。
当然我已经可以手动执行此操作,但修改器会更好,因为我可以在那里应用所有样式,也许还可以圆角并应用外部填充。
最终的结果应该是这样的:
VStack {
Text("Group name")
Text("Group hashtags")
Text("Group description")
}
.modifier(ListStyleModifier())
【问题讨论】:
-
为什么是-1?我见过很多人遇到这个问题。
-
似乎没有任何方法可以枚举
VStack之类的内部的各个视图。就添加样式修饰符的想法而言,例如,您可以使用修饰符注入描述样式类型的环境键,但您需要在堆栈中自定义组件来响应它们。该解决方案也没有提供对项目索引的访问权限,因此无法对顶部和底部项目进行不同的样式设置。这种事情在 SwiftUI 中似乎是一场艰苦的战斗(现在)。
标签: swiftui swiftui-list swiftui-form