首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI:在单个视图和HStack视图之间设置动画

SwiftUI:在单个视图和HStack视图之间设置动画
EN

Stack Overflow用户
提问于 2019-11-27 00:06:55
回答 1查看 566关注 0票数 0

目标:

1-显示覆盖整个屏幕的视图(蓝色)

2-当点击底部(右上角)时,它会显示一个HStack动画右侧HStack (绿色)“滑动偏移动画”。

代码语言:javascript
复制
import SwiftUI

struct ContentView: View {

    @State var showgreen = false


    var body: some View {


    NavigationView {

        HStack {
            Rectangle()
            .foregroundColor(.blue)

            if showgreen  {
            Rectangle()
            .foregroundColor(.green)
            .offset(x: showgreen ? 0 : UIScreen.main.bounds.width)
            .animation(.easeInOut)
            }

           }

    .navigationBarItems(trailing:
      Button(action: { self.showgreen.toggle() }) {
              Image(systemName: "ellipsis")
              })
       }

    .navigationViewStyle(StackNavigationViewStyle())


    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
        .colorScheme(.dark)
        .previewDevice("iPad Pro (12.9-inch) (3rd generation)")
    }
}

代码可以工作,但是我不能让绿色的“幻灯片偏移动画”工作。非常感谢您的帮助!:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-27 00:34:55

而不是使用if条件,您需要绿色矩形已经存在,并且就在屏幕之外。当showgreen切换时,您需要缩小蓝色矩形的大小,这将为绿色矩形腾出空间。

代码语言:javascript
复制
struct ContentView: View {
    @State var showgreen = false

    var body: some View {
        NavigationView {
            HStack {
                Rectangle()
                    .foregroundColor(.blue)
                    .frame(width: showgreen ? UIScreen.main.bounds.width / 2 : UIScreen.main.bounds.width)
                    .animation(.easeInOut)

                Rectangle()
                    .foregroundColor(.green)
                    .animation(.easeInOut)
            }
            .navigationBarItems(trailing:
                Button(action: { self.showgreen.toggle() }) {
                    Image(systemName: "ellipsis")
            })
        }
        .navigationViewStyle(StackNavigationViewStyle())
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59054986

复制
相关文章

相似问题

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