SwiftUI - edgesIgnoringSafeArea 在 iOS 13.4 中的行为不同

Posted

技术标签:

【中文标题】SwiftUI - edgesIgnoringSafeArea 在 iOS 13.4 中的行为不同【英文标题】:SwiftUI - edgesIgnoringSafeArea behaves differently in iOS 13.4 【发布时间】:2020-03-20 12:40:28 【问题描述】:

我注意到,在我的应用中,.edgesIgnoringSafeArea 在 ios 13.3 和 iOS 13.4 中呈现的视图不同。

在我的 ContentView 中,我应用了 .edgesIgnoringSafeArea(.top) 修饰符。这在 13.4 之前的所有 iOS 13 版本中都能正确显示。现在在 13.4 的 GM 中,视图的顶部和底部都被切断了。

这是我的内容视图

struct ContentView: View 
@EnvironmentObject var session: SessionStore
func getUser() 
    session.listen()




var body: some View 

        Group 
            ZStack 
                TabView 
                    ExploreView().tabItem 
                        Image(systemName: "house.fill")
                        Text("Explore")
                    .tag(1)
                    FestivalsView().tabItem 
                        Image(systemName: "globe")
                        Text("Festivals")
                    .tag(2)
                    ProfileView().tabItem 
                        Image(systemName: "person.crop.circle.fill")
                        Text("Profile")
                    .tag(3)
                
                .accentColor(Color("wdwPurple"))
                .edgesIgnoringSafeArea(.top)
    
        .onAppear(perform: getUser)
    

它的显示方式如下:

有什么想法吗?

【问题讨论】:

你的代码中出现 ZStack 和 Group 的原因是什么? 我会说 13.3 是不正确的 - 它完全没有忽略顶部安全区域。忽略背景很好,在你的情况下 - 文本 - 我根本不会使用这个修饰符。 我也有同样的问题。在设备上。该应用在 iOS 13.3 上看起来不错,现在在 iOS 13.4 更新后它和你的一样坏了。 我遇到了同样的问题。下面的答案都没有任何意义。如果我们为 iOS 13.4 “纠正”这个问题,它将破坏 iOS 13.3 的所有内容。 我推送了我的应用程序的新版本,删除了修饰符,它在 iOS 13.3.1 和 13.4 上正确显示。但是,是的,我也担心如果我将它修复为 13.4,它会破坏低于该值的任何东西。 【参考方案1】:

其实在 iOS GM 13.4 上看起来是正确的,因为是忽略顶部安全区域

【讨论】:

【参考方案2】:

我删除了修饰符,它似乎可以正确显示。就像其他人所说的那样,模拟器并不能很好地指示事物在实际设备上的实际呈现方式。

【讨论】:

以上是关于SwiftUI - edgesIgnoringSafeArea 在 iOS 13.4 中的行为不同的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - SwiftUI 中是不是有等效的 popViewController?

swiftui 请求 渲染数据

SwiftUI 学习曲线

SwiftUI NavigationLink 如何到达另一个 SwiftUI 页面?

SwiftUI - 如何在 SwiftUI 中弹出到特定视图?

SwiftUI3.0将UIKit ViewController转化成 swiftUI的view