减少透明度(Reduce Transparency)是 iOS 和 macOS 提供的一项辅助功能,主要目的是让界面更加清晰、易读,尤其是针对有视觉障碍或需要减少视觉疲劳的用户。
减少透明度的作用
1、降低视觉干扰:
去除界面中的模糊或半透明效果,用实心背景代替,提高视觉清晰度。
2、增强可读性:
当界面背景较为复杂(如图片、渐变背景)时,减少透明度可以提高文字和内容的对比度,方便阅读。
3、用户控制:
用户可以通过系统设置启用或禁用该功能,SwiftUI 提供了对这一设置的检测,从而调整应用界面的表现。
用户设置位置
1、iOS
路径:
设置 > 辅助功能 > 显示与文字大小 > 减少透明度
2、macOS
路径:
系统设置 > 辅助功能 > 显示 > 减少透明度
在 SwiftUI 中的适配
通过 @Environment(\.accessibilityReduceTransparency),可以检测用户是否启用了减少透明度功能,并根据结果动态调整界面设计。
示例 1:透明与不透明的背景切换
import SwiftUI
struct ContentView: View {
@Environment(\.accessibilityReduceTransparency) var reduceTransparency
var body: some View {
Text("减少透明度示例")
.padding()
.background(
reduceTransparency
? Color.blue // 不透明背景
: Color.blue.opacity(0.5) // 半透明背景
)
.cornerRadius(10)
.foregroundColor(.white)
}
}
效果:
当启用“减少透明度”时,背景色为不透明的蓝色。
当未启用时,背景色为半透明的蓝色。
示例 2:替换模糊效果
import SwiftUI
struct ContentView: View {
@Environment(\.accessibilityReduceTransparency) var reduceTransparency
var body: some View {
ZStack {
// 背景图片
Image("example-image")
.resizable()
.scaledToFill()
.edgesIgnoringSafeArea(.all)
// 前景模糊或不透明背景
VStack {
Text("模糊效果示例")
.font(.largeTitle)
.padding()
.background(
reduceTransparency
? AnyView(Color.black) // 不透明背景
: AnyView(
Rectangle()
.fill(Color.black.opacity(0.5)) // 半透明背景
.blur(radius: 10) // 添加模糊效果
)
)
.cornerRadius(10)
.foregroundColor(.white)
}
}
}
}
效果:
当启用“减少透明度”时,不使用模糊效果,提供实心背景。
当未启用时,使用模糊背景效果。
适配减少透明度的建议
1、避免依赖透明度传达信息:
如果透明效果在界面中起到了重要作用(如区分层级或状态),需要提供替代设计以满足减少透明度时的需求。
2、提供高对比度替代方案:
启用“减少透明度”后,可以增加前景和背景的对比度,提升内容的易读性。
3、测试设置:
在开发时测试“减少透明度”开启和关闭的情况,确保界面在不同设置下的表现一致且友好。