gpt4 book ai didi

swift - 如何仅为一个特定的修改器更改应用动画?

转载 作者:行者123 更新时间:2023-12-04 02:31:53 25 4
gpt4 key购买 nike

如何只申请.animation.offset同时保持其他修饰符更改不受其影响。添加 .animation偏移后也会动画字体大小的变化。
enter image description here

// 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 !!
}
}

关于swift - 如何仅为一个特定的修改器更改应用动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63770120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com