我在组框中有一个选择器视图。当更改选择器内的选定值时,选择器标签的大小会发生变化,组框的宽度也会发生变化。我在组框中添加了一个动画,其中选择器的选择值作为监视更改的值。但组框没有动画
GroupBox {
Picker("Period", selection: $periodIndex) {
ForEach(0..<periods.count, id: \.self) { index in
Text(periods[index]).tag(index)
}
}
.tint(.white)
}
.animation(.spring, value: settingsViewModel.periodIndex)
由于我从未使用整数进行动画处理,所以我使用了一个布尔值,该布尔值在选择器的选择值发生变化时进行切换,但它也不起作用
我不认为缺乏动画与
GroupBox
有任何关系。这正是当选择器样式为 Picker
时原生 .menu
的工作方式。但您在这里会注意到更多一点,因为 GroupBox
添加了一个背景形状,当选择更改时,该背景形状的大小也会发生变化。
我找不到一种方法来动画改变。但您至少可以通过将
minWidth
应用于 Picker
来避免组大小的变化。比如:
Picker("Period", selection: $periodIndex) {
// content as before
}
.frame(minWidth: 100)
选择本身仍然会发生变化而没有动画,但至少
GroupBox
不会改变大小。
诗。您可以编辑自己的帖子来修复
value
修饰符上的错误 .animation
。