使用SwiftUI,我有一个视图,其中包含一个滑块,我正在使用一个过渡从底部插入。一切运行良好,直到滑块来回快速移动。这样,文本字段将被设置为动画,当从1位数更改为两位数时将显示“ ...”。
这是我的测试代码,显示以下内容:
struct TestSliderView: View {
@State private var val: Double = 0
@State private var showSlider: Bool = false
var body: some View {
VStack {
Button(action: {
self.showSlider.toggle()
}) {
Text("Show Slider")
}
Spacer()
if showSlider {
JustTheSlider(val: $val)
.padding()
.transition(.move(edge: .bottom))
.animation(.linear(duration: 0.4))
}
}
}
}
struct JustTheSlider: View {
@Binding var val: Double
var body: some View {
VStack {
Text("Slider")
.font(.title)
HStack {
Text("Value: ")
.frame(minWidth: 80, alignment: .leading)
Slider(value: $val, in: 0...30, step: 1)
Text("\(Int(val))")
.frame(minWidth: 20, alignment: .trailing)
.font(Font.body.monospacedDigit())
.padding(.horizontal)
}
}
}
}
解决此问题的一种方法是删除.animation(.linear(duration: 0.4))
行,并用如下动画包装按钮动作:
Button(action: {
withAnimation(.linear(duration: 0.4)) {
self.showSlider.toggle()
}
}) {
Text("Show Slider")
}
这会阻止文本动画,但是视图只会滑出,而不会出现任何滑动动画而弹出。
有什么想法吗?
答案 0 :(得分:0)
您需要设置状态变量的动画,而不是View的动画。
data = request.json['message']\nTypeError: 'NoneType' object is not subscriptable
如最后一行所示。