SwiftUI辅助功能:降低透明度
SwiftUI辅助功能:降低透明度

SwiftUI辅助功能:降低透明度

减少透明度(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、测试设置

在开发时测试“减少透明度”开启和关闭的情况,确保界面在不同设置下的表现一致且友好。

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

发表回复

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