【问题标题】:How to disable opacity with transitions in SwiftUI如何在 SwiftUI 中使用过渡禁用不透明度
【发布时间】:2021-08-25 22:34:52
【问题描述】:

我正在使用 SwiftUI。

我有一个转换,我正在使用它来调出我的 SignInView。但是,这种过渡似乎会自动在它要替换的视图上应用不透明效果。这不是问题,但是,似乎顶部和底部的安全区域接收不透明度的速率与视图的其余部分不同。

我正在尝试找到 2 个解决方案中的 1 个:

  1. 我怎样才能完全摆脱不透明效果,或者
  2. 如何让不透明效果均匀地应用到任何地方。

这是我的过渡代码:

struct AuthView: View {
    
    @State var showSignIn: Bool = false
    
    var body: some View {
        ZStack {
            if !showSignIn {
                WelcomeView(showSignIn: $showSignIn)
                    
            } else {
                SignInView(showSignIn: $showSignIn)
                    .transition(AnyTransition.move(edge: .trailing))
                    .zIndex(1)
            }
        }
    }
}

这里是控制状态变量的按钮:

Button(action: { withAnimation(.easeInOut) { showSignIn.toggle() } }) {
                         //Button text
                        }

当我提到不透明度的不均匀分布时,我还有一个视频 (GIF) 可以更好地展示我在说什么。

https://i.stack.imgur.com/KXEcF.gif

如果您仔细观察顶部和底部安全区域,它会比视图的其余部分消失得更快,这是不希望的。

注意:当我将外观更改为深色模式时,它的顶部和底部变为黑色而不是白色。

提前感谢您的帮助!

【问题讨论】:

    标签: swift xcode macos swiftui


    【解决方案1】:

    我假设您想要原始视图的身份转换(如果没有其他指定,则默认应用不透明度转换)

    if !showSignIn {
        WelcomeView(showSignIn: $showSignIn)
          .transition(.identity)                // << here !!
    

    【讨论】:

    • 谢谢!非常感谢
    猜你喜欢
    • 2014-07-27
    • 2021-07-26
    • 1970-01-01
    • 2018-08-01
    • 2015-03-28
    • 1970-01-01
    • 2015-11-08
    • 2020-05-29
    • 2014-03-07
    相关资源
    最近更新 更多