作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我制作了以下 PulsatingView
:
struct PulsatingView: View {
@State private var opacity = 0.7
@State private var scale: CGFloat = 0.5
var body: some View {
VStack {
ZStack {
Circle()
.fill(Color.black.opacity(opacity))
.animation(.easeInOut(duration: 2).delay(1.5).repeatForever(autoreverses: false))
.frame(width: 7, height: 7)
.scaleEffect(scale)
.animation(.easeIn(duration: 2.5).delay(1).repeatForever(autoreverses: false))
Circle()
.fill(Color.black)
.frame(width: 7, height: 7)
}
}
.onAppear {
opacity = 0
scale = 5
}
}
}
它产生以下结果:(点击查看动画;它是一个 .gif)
但是,当我将它添加到 View 中时,例如在 VStack
中,会发生这种情况:(单击以查看动画;它是一个 .gif)
我不知道为什么会这样,也不知道该如何解决。我已经尝试添加诸如 .fixedSize(horizontal: true, vertical: true)
或 .frame(width: 50, height: 50)
之类的修饰符,但是没有帮助。
有人知道这是怎么回事吗?
最佳答案
尝试使用具有连接值的动画,例如
Circle()
.fill(Color.black.opacity(opacity))
.animation(.easeInOut(duration: 2).delay(1.5).repeatForever(autoreverses: false), value: opacity) // << here !!
.frame(width: 7, height: 7)
.scaleEffect(scale)
.animation(.easeIn(duration: 2.5).delay(1).repeatForever(autoreverses: false), value: scale) // << here !!
重要提示:如果它是在 NavigationView
中启动的,那么动画状态应该被推迟激活。 https://stackoverflow.com/a/66643096/12299030 中提供了原因和调查详情.
关于SwiftUI View 在意想不到的路径上动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69448390/
我是一名优秀的程序员,十分优秀!