SwiftUI:.privacySensitive()在iOS16环境下无法正常生效求助
iOS16小组件中
privacySensitive()失效的解决方案 在iOS16环境下,原有的.privacySensitive()修饰符无法正常触发设备锁定时的文本模糊效果,可通过以下两种方式解决:
方法1:使用redacted结合锁定状态环境变量
利用iOS16新增的\.isLocked环境变量,精准控制敏感文本的模糊状态:
struct WidgetView: View { @Environment(\.isLocked) private var isLocked var body: some View { Text("Some sensitive text") .redacted(reason: isLocked ? .privacy : []) } }
方法2:配置Widget全局隐私敏感标记
在Widget的配置代码中添加全局隐私标记,由系统统一处理锁定时的模糊逻辑:
struct MyWidget: Widget { let kind: String = "MyWidget" var body: some WidgetConfiguration { StaticConfiguration(kind: kind, provider: Provider()) { entry in WidgetView(entry: entry) .privacySensitive() } .privacySensitive(true) // 新增全局隐私标记 .configurationDisplayName("My Widget") .description("This is an example widget.") } }
注意:两种方法均需确保Xcode版本为14.2及以上,目标iOS版本设置为16.0+。
内容的提问来源于stack exchange,提问作者Koh
相关产品推荐
相关产品推荐

