首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZStack块动画SwiftUI

ZStack块动画SwiftUI
EN

Stack Overflow用户
提问于 2022-06-14 06:45:26
回答 2查看 236关注 0票数 0

因此,我的目标是能够不时地在SwiftUI表视图上显示自定义视图,所以我想我应该把它们都放在这样的ZStack中

代码语言:javascript
复制
@State var show = true
@State private var selectedTab      : Int = 0

var body: some View {
    ZStack {
        TabView(selection: $selectedTab) {
            Color.pink
        }
        
        if show {
            Button(action: {
                withAnimation(Animation.linear(duration: 10)) {
                    show = false
                }
            }) {
                Color.blue
            }
            .frame(width: 100, height: 100)
        }
    }
}

这很好,但是当我尝试使用withAnimation()时,不会触发任何动画。我如何使叠加视图,消失与动画?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-14 07:30:24

所以我找到了一个解决方案,我认为这是原因所在。我的假设是,如果动画修饰符没有显式设置,它就不会处理ZIndex。

一种解决方案是将ZIndex设置为顶部应该高于另一个视图的视图。如下所示:

代码语言:javascript
复制
@State var show = true
@State private var selectedTab      : Int = 0

var body: some View {
    ZStack {
        TabView(selection: $selectedTab) {
            Color.pink
        }
        
        if show {
            Button(action: {
                withAnimation {
                    show = false
                }
            }) {
                Color.blue
            }
            .frame(width: 100, height: 100)
            .zIndex(.infinity)  // <-- this here makes the animation work
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2022-06-14 06:50:31

在容器中使用.animation修饰符,如下所示,因此容器可以动态删除视图

代码语言:javascript
复制
ZStack {
    TabView(selection: $selectedTab) {
        Color.pink
    }
    
    if show {
        Button(action: {
           show = false   // << withAnimation not needed anymore
        }) {
            Color.blue
        }
        .frame(width: 100, height: 100)
    }
}
.animation(Animation.linear(duration: 10), value: show)   // << here !!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72612559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档