如何只适用.animation
于.offset
同时保持不受它的其他修改变化。.animation
在偏移量之后添加还将使字体大小变化动起来。
// Main view
var body: some View {
GeometryReader { geo in
VStack {
DynamicText()
}
.frame(height: geo.size.height)
.offset(y: self.viewModel.offset ? 5.0 : 0)
.animation(.default)
}
}
// DynamicText view
var body: some View {
return GeometryReader { geo in
VStack {
Text("Foo")
.font(
.system(size: geo.size.height * 0.95, weight: .regular, design: .monospaced))
.minimumScaleFactor(0.05)
.lineLimit(1)
.foregroundColor(Color("primary"))
}
.frame(height: geo.size.height)
}
}
也尝试过放置.animation(nil)
上面的修饰符无意进行动画处理,但是,这也使偏移量无法动画处理。由于ZStack
包含了不同的条件渲染,DynamicText
因此动画修改器还在内容更改之间应用了淡入淡出过渡,这是我要避免的事情。
// Main view
var body: some View {
GeometryReader { geo in
VStack {
DynamicText()
}
.animation(nil)
.frame(height: geo.size.height)
.offset(y: self.viewModel.offset ? 5.0 : 0)
.animation(.default)
}
}
提供的快照不可测试,因此仅是一种考虑-尝试将动画限制为显式偏移值,例如
var body: some View {
GeometryReader { geo in
VStack {
DynamicText()
}
.frame(height: geo.size.height)
.offset(y: self.viewModel.offset ? 5.0 : 0)
.animation(.default, value: self.viewModel.offset) // << here !!
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句