Swiftui @ObservedObject更改时文本帧的快速UI高度动画
当NetStatus发生变化时,我尝试制作一个平滑的动画,但它不能像我所希望的那样工作 我希望获得与使用切换动画按下按钮时相同的效果。注释按钮动画效果很好,我尝试通过缩放文本帧的高度来复制它 注释的按钮代码只是我想要的动画效果的一个工作示例(优雅地展开和关闭),我不需要这个代码 我该怎么做Swiftui @ObservedObject更改时文本帧的快速UI高度动画,swiftui,observedobject,Swiftui,Observedobject,当NetStatus发生变化时,我尝试制作一个平滑的动画,但它不能像我所希望的那样工作 我希望获得与使用切换动画按下按钮时相同的效果。注释按钮动画效果很好,我尝试通过缩放文本帧的高度来复制它 注释的按钮代码只是我想要的动画效果的一个工作示例(优雅地展开和关闭),我不需要这个代码 我该怎么做 import SwiftUI struct NoNetwork: View { let screenSize: CGRect = UIScreen.main.bounds @ObservedO
import SwiftUI
struct NoNetwork: View {
let screenSize: CGRect = UIScreen.main.bounds
@ObservedObject var online = NetStatus()
var body: some View {
VStack{
Text("NoNetworkTitle")
.fontWeight(.bold)
.foregroundColor(Color.white)
.frame(width: screenSize.width, height: self.online.connected ? 0 : 40, alignment: .center)
// .animation(.easeIn(duration: 5))
.background(Color.red)
// Button(action: {
// withAnimation {
// self.online.connected.toggle()
// }
// }, label: {
// Text("Animate")
// })
}
}
}
struct NoNetwork_Previews: PreviewProvider {
static var previews: some View {
NoNetwork()
}
}
要在
联机时设置动画。已连接的更改,请将.animation
修改器放在VStack
上:
VStack{
Text("NoNetworkTitle")
.fontWeight(.bold)
.foregroundColor(Color.white)
.frame(width: screenSize.width, height: self.online.connected ? 0 : 40, alignment: .center)
.background(Color.red)
Button(action: {
self.online.connected.toggle()
}, label: {
Text("Animate")
})
}
.animation(.easeInOut(duration: 0.5))
当文本出现和消失时,这将为VStack
中的其他视图设置动画