在加载视图时淡入控件(而不是在状态更改后插入)
Fade-in a control in when a view is loaded (and not inserted after a state change)
我想要的是当控件所在的视图出现第一次时,控件会淡入。我已经尝试了所有方法,但没有成功。
withAnimation(.default) {
Text("hey")
.transition(.opacity)
}
// as well as
Text("hey")
.transition(.opacity)
.animation(.default)
// and finally
@State var opacity:Double = 0.0
Text("hey")
.opacity(self.opacity)
.transition(.opacity)
.animation(.default)
[...]
.onAppear() {
self.opacity = 1.0
}
如果通过按下更改 self.opacity 的值的按钮使视图可见,我可以让动画工作,我想如果控件不可见,上述方法通常会工作最初应该出现,但被插入了。
这是可能的解决方案(您可以调整参数以获得所需的效果)
测试 Xcode 12.1 / iOS 14.1
struct DemoFadeInView: View {
@State var isShown = false
var body: some View {
VStack {
if isShown {
Text("hey")
.transition(.opacity)
}
}
.animation(Animation.easeInOut(duration: 1).delay(0.5)) // delay is optional, for demo
.onAppear() {
self.isShown.toggle()
}
}
}
我想要的是当控件所在的视图出现第一次时,控件会淡入。我已经尝试了所有方法,但没有成功。
withAnimation(.default) {
Text("hey")
.transition(.opacity)
}
// as well as
Text("hey")
.transition(.opacity)
.animation(.default)
// and finally
@State var opacity:Double = 0.0
Text("hey")
.opacity(self.opacity)
.transition(.opacity)
.animation(.default)
[...]
.onAppear() {
self.opacity = 1.0
}
如果通过按下更改 self.opacity 的值的按钮使视图可见,我可以让动画工作,我想如果控件不可见,上述方法通常会工作最初应该出现,但被插入了。
这是可能的解决方案(您可以调整参数以获得所需的效果)
测试 Xcode 12.1 / iOS 14.1
struct DemoFadeInView: View {
@State var isShown = false
var body: some View {
VStack {
if isShown {
Text("hey")
.transition(.opacity)
}
}
.animation(Animation.easeInOut(duration: 1).delay(0.5)) // delay is optional, for demo
.onAppear() {
self.isShown.toggle()
}
}
}