如何在iPhone锁定时隐藏iOS 14小组件的内容?
问题描述
我有一个展示敏感数据的小组件。我们都知道,iOS小组件既可以放置在主屏幕,也可以放在Today widget page页面。Today widget page页面即便处于手机锁定状态也可见!这就产生了如下问题:我希望在用户锁定手机时隐藏小组件内容。
我发现iOS自带的Screen Time小组件已经实现了该特性:手机锁定时不会暴露任何数据,一旦完成解锁(即激活Face ID),所有数据就会正常展示。
效果演示
锁定状态

解锁状态

实现方案
你可以直接使用WidgetKit提供的系统级API实现该效果,不需要自行监听设备锁定状态:
- 给需要隐藏的敏感视图添加
privacySensitive()修饰符即可,系统会自动处理显隐逻辑:- 设备处于锁定状态时,标记为隐私敏感的内容会被自动隐藏,替换为模糊占位样式
- 设备解锁后,内容会自动正常展示
- 代码示例:
struct SensitiveWidgetEntryView : View { var entry: WidgetEntry var body: some View { VStack { // 你的敏感数据视图 Text("账户余额") Text("隐私统计数据") } // 标记整个小组件内容为隐私敏感 .privacySensitive() } }
- 如果你不需要隐藏整个小组件,也可以仅给需要隐藏的单个子视图添加该修饰符。
内容的提问来源于stack exchange,提问作者Azhagusundaram Tamil
相关产品推荐
相关产品推荐

