Swift 间隔棒会破坏按钮外观,按钮仍会切换
我创建了一个HStack,其中包含一组按钮,这些按钮在选中和取消选中时会改变外观。一次只能选择一个按钮。在项目之间添加分隔符()时,“按钮切换”起作用,但是外观不再改变,即使选定的索引正在按预期的方式改变Swift 间隔棒会破坏按钮外观,按钮仍会切换,swift,swiftui,Swift,Swiftui,我创建了一个HStack,其中包含一组按钮,这些按钮在选中和取消选中时会改变外观。一次只能选择一个按钮。在项目之间添加分隔符()时,“按钮切换”起作用,但是外观不再改变,即使选定的索引正在按预期的方式改变 struct GenericFilterButton: View { var category: String var textColor: Color var buttonColor: Color var body: some View { T
struct GenericFilterButton: View {
var category: String
var textColor: Color
var buttonColor: Color
var body: some View {
Text(category)
.font(.custom("Avenir Heavy", size: 14))
.foregroundColor(textColor)
.padding(.vertical, 10)
.padding(.horizontal, 14)
.background(buttonColor)
.cornerRadius(50)
.lineLimit(1)
}
}
struct FilterViewCompletionPercent: View {
var completionPercent = ["Any", "25%", "50%", "75%", "100%"]
@State var percentSelected = 0
var body: some View {
VStack(alignment: .leading, spacing: 0) {
Text("Completion")
.font(.custom("Avenir Heavy", size: 18))
.foregroundColor(Color.black.opacity(0.5))
.padding(.bottom, 20)
HStack(alignment: .center) {
ForEach(0..<completionPercent.count) { i in
Button(action: {
self.percentSelected = i
print(self.percentSelected)
}) {
GenericFilterButton(category: self.completionPercent[i], textColor: self.percentSelected == i ? Color.white : Color.black.opacity(0.5), buttonColor: self.percentSelected == i ? Color.blue : Color.white.opacity(0.0))
}
if i != 4 {
Spacer()
}
}
}.padding(.bottom, 20)
Divider()
.background(Color.black.opacity(0.1))
}.padding(.horizontal, 25)
.padding(.top, 30)
}
}
struct GenericFilterButton:视图{
变量类别:字符串
var textColor:Color
var按钮颜色:颜色
var body:一些观点{
文本(类别)
.font(.custom(“Avenir Heavy”,大小:14))
.foregroundColor(文本颜色)
.padding(.vertical,10)
.padding(.卧式,14)
.背景(按钮颜色)
.转弯半径(50)
.lineLimit(1)
}
}
结构FilterViewCompletionPercent:视图{
var completionPercent=[“任何”、“25%”、“50%”、“75%”、“100%”]
@状态变量%selected=0
var body:一些观点{
VStack(对齐:。前导,间距:0){
文本(“完成”)
.font(.custom(“Avenir Heavy”,大小:18))
.foregroundColor(颜色.黑色.不透明度(0.5))
.padding(.bottom,20)
HStack(对齐:。中心){
ForEach(0..ForEach的动态内容应为单视图,因此将按钮间隔对嵌入另一个HStack
使用Xcode 11.4/iOS 13.4进行测试
HStack(alignment: .center) {
ForEach(0..<completionPercent.count, id: \.self) { i in
HStack { // << this one !!
Button(action: {
self.percentSelected = i
print(self.percentSelected)
}) {
GenericFilterButton(category: self.completionPercent[i], textColor: self.percentSelected == i ? Color.white : Color.black.opacity(0.5), buttonColor: self.percentSelected == i ? Color.blue : Color.white.opacity(0.0))
}
if i != 4 {
Spacer()
}
}
}
}.padding(.bottom, 20)
HStack(对齐:。中心){
ForEach(0..ForEach的动态内容应为单视图,因此将按钮间隔对嵌入另一个HStack
使用Xcode 11.4/iOS 13.4进行测试
HStack(alignment: .center) {
ForEach(0..<completionPercent.count, id: \.self) { i in
HStack { // << this one !!
Button(action: {
self.percentSelected = i
print(self.percentSelected)
}) {
GenericFilterButton(category: self.completionPercent[i], textColor: self.percentSelected == i ? Color.white : Color.black.opacity(0.5), buttonColor: self.percentSelected == i ? Color.blue : Color.white.opacity(0.0))
}
if i != 4 {
Spacer()
}
}
}
}.padding(.bottom, 20)
HStack(对齐:。中心){
ForEach(0。。