SwiftUI 在 watchOS 上使用 List 和 ForEach 的奇葩问题

在手表上创建可以点击的按钮。

1.List + ForEach + Button

1
2
3
4
5
6
7
8
9
10
List {
ForEach(data) { item in
Button{
print("Clicked")
} label: {
Text(item.name)
// .padding()
}
}
}

整个按钮可以点击,且有点击动画。不过加 .padding() 不会改变按钮大小。

2.List + ForEach + HStack(Text)

1
2
3
4
5
6
7
8
9
10
List {
ForEach(data) { item in
HStack {
Text(item.name)
Spacer()
}.onTapGesture {
print("Clicked")
}
}
}

只有 Text 文字部分可以点击,且没有点击动画。

不用 HStack 而是直接用 Text 效果是一样的。

3.List + Button

1
2
3
4
5
6
7
8
List(data) { item in
Button{
print("Clicked")
} label: {
Text(item.name)
// .padding()
}
}

整个按钮可以点击,且有点击动画。加 .padding() 同样不会改变按钮大小。

4.List + HStack(Text)

效果与「List + ForEach + HStack(Text)」相同。


SwiftUI 在 watchOS 上使用 List 和 ForEach 的奇葩问题
https://wonderhoi.com/2024/01/23/SwiftUI-在-watchOS-上使用-List-和-ForEach-的奇葩问题/
作者
wonderhoi
发布于
2024年1月23日
许可协议