SwiftUI忽略安全区域的edgesIgnoringSafeArea和ignoresSafeArea
SwiftUI忽略安全区域的edgesIgnoringSafeArea和ignoresSafeArea

SwiftUI忽略安全区域的edgesIgnoringSafeArea和ignoresSafeArea

在SwiftUI中可以使用edgesIgnoringSafeArea或ignoresSafeArea忽略系统的安全区域,它们的作用是让视图可以延伸到整块屏幕。

什么是Safe Area(安全区域)?

在iPhone屏幕存在一个Safe Area(安全区域):

1、顶部的状态栏(时间、电量)

2、底部的Home指示条

3、iPhone刘海(notch)或灵动岛(Dynamic Island)

SwiftUI默认会避免这些区域,这就意味着视图不会贴边显示。

例如,设置一张壁纸图片:

VStack {
    Image("bg0")
        .resizable()
        .scaledToFill()
}

可以看到,即使使用scaledToFill铺满视图,仍然无法铺满整个应用视图。这是就需要使用edgesIgnoringSafeArea和ignoresSafeArea铺满整个应用视图。

1、edgesIgnoringSafeArea

edgesIgnoringSafeArea(_:) 可以指定方向:

.all:忽略上下左右全部安全区;

.botton:忽略底部安全区;

.top:忽略顶部安全区;

.horizontal:忽略左右安全区;

.leading:忽略左侧安全区;

.trailing:忽略右侧安全区;

.vertical:忽略上下安全区,与.all相同。

例如:

.edgesIgnoringSafeArea([.top])

表示忽略顶部安全区。

2、ignoresSafeArea

从iOS 14起,推荐使用新语法:

.ignoresSafeArea()

完全等价于旧的:

.edgesIgnoringSafeArea(.all)

ignoresSafeArea可以接收两个参数:

.ignoresSafeArea(_ regions: SafeAreaRegions = .all, edges: Edge.Set = .all)

1)SafeAreaRegions枚举:

.container:设备和用户界面内容器定义的安全区域;

.keyboard:视图中键盘相匹配的安全区域;

.all:所有安全区域

2)edges枚举:.top、.leading、.bottom、.trailing、.all、.horizontal、.veritical。

常见用法

1、忽略全部安全区域:

.ignoresSafeArea()

等价于 .ignoresSafeArea(.all, edges: .all)

2、只忽略顶部安全区域:

.ignoresSafeArea(.container, edges: .top)

3、只忽略底部安全区域:

.ignoresSafeArea(.container, edges: .bottom)

总结

系统默认保留一个安全显示区域,需要通过edgesIgnoringSafeArea或者.ignoresSafeArea()修饰符,将视图内容延伸到全屏。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注