这一节来知道安全区域,那么安全区域是什么?
SafeArea表示屏幕上的安全区域,这是在不受视觉遮挡或不良用户体会的情况下,用于放置内容的区域。安全区域通常涉及到设备的边际,例如屏幕顶部的状态栏区域、底部的Home指示器或设备的刘海
以下是苹果给出的SafeArea,各个屏幕的指导都有。
Layout | Apple Developer Documentation
*A consistent layout that adapts to various contexts makes your experience more approachable and helps people enjoy…*developer.apple.com
当咱们在运用苹果的组件时,它会默许帮咱们留好安全区域,以防咱们把布局放在了非安全区域
下图便是一个例子,运用 VStack,它会自动的把内部的视图放在安全区域内部。防止带来不好的体会
struct SafeAreaSample: View {
var body: some View {
VStack {
Rectangle()
.fill(Color.red)
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
}
但是有时,咱们需求全屏去布局一个布景色。有的时分的布局就超出了安全区域,那么咱们改如何去做?
这个时分咱们的主角就要上场了,ignoresSafeArea, ignoresSafeArea 可以设置超出安全区域的方向,他是一个Edge.Set 枚举类型
默许情况下它会疏忽上下左右都超出安全区域,你也可以设置某一边。
比方我只设置top, 作用如下
以上代码是,运用Blue色彩来作为底布景,在底布景上面填充来一个矩形来作为内容视图
ZStack {
Rectangle()
.fill(
LinearGradient(gradient: Gradient(colors: [Color.blue, Color.green]), startPoint: .topLeading, endPoint: .bottomTrailing)
)
.ignoresSafeArea()
Button {
} label: {
Text("点我")
.foregroundColor(Color.black)
.padding()
.padding(.horizontal, 20)
.background(Color.white)
.cornerRadius(10)
.shadow(radius: 10)
}
}
运用渐变色作为布景,然后在内容区域填充内容
以上是运用图形的布景色来作整个区域的布景填充
struct SafeAreaSample: View {
var body: some View {
VStack {
Rectangle()
.fill(Color.blue)
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(
Color.red
.edgesIgnoringSafeArea(.all)
)
}
}
}
安全区域就这么多,喜欢就点个赞吧!