Xma*_*hts 4 animation ios swiftui
我正在尝试在其父视图底部的视图中设置动画。通过设置偏移动画可以相对容易地做到这一点,如下所示:
struct ContentView: View {
@State var isShowingBanner = true
var bannerOffset: CGFloat {
isShowingBanner ? 0 : 60
}
var body: some View {
VStack {
VStack {
Spacer()
BannerView()
.offset(y: bannerOffset)
}
.border(Color.black, width: 1.0)
.clipped()
Spacer()
Button("Toggle Banner") {
withAnimation {
isShowingBanner.toggle()
}
}
}
.padding()
}
}
Run Code Online (Sandbox Code Playgroud)
明显的问题是,这只是使用任意值作为动画偏移,并且在考虑动态类型时很快就会崩溃
我的问题是:
有没有办法正确确定高度BannerView以正确调整此动画。或者有没有更好的方法来达到这个效果?
谢谢大家
只需通过过渡即可完成,例如
使用 Xcode 13.3 / iOS 15.4 进行测试
struct ContentView: View {
@State var isShowingBanner = true
var body: some View {
VStack {
VStack {
Spacer()
if isShowingBanner {
BannerView()
.transition(.move(edge: .bottom)) // << here !!
}
}
// >> empty container should not shrink !!
.frame(maxWidth: .infinity, maxHeight: .infinity)
.border(Color.black, width: 1.0)
.clipped()
Spacer()
Button("Toggle Banner") {
withAnimation {
isShowingBanner.toggle()
}
}
}
.padding()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3523 次 |
| 最近记录: |