如何实现Device Activity Report中应用图标的放大显示?
解决Screen Time应用图标放大模糊的问题
直接使用Label(applicationToken)获取的图标是系统默认的小尺寸资源,强行缩放必然导致画质损失。正确的做法是通过ApplicationToken提供的applicationIcon(for:)方法直接获取指定尺寸的高清图标:
- 调用
applicationIcon(for:)方法时传入需要的图标尺寸,系统会返回对应大小的高清资源 - 无需依赖
Label的图标组件,直接使用获取到的Image视图即可
修改后的代码如下:
@ViewBuilder private func appIcon(for applicationToken: ApplicationToken?) -> some View { if let applicationToken, let iconImage = applicationToken.applicationIcon(for: CGSize(width: 50, height: 50)) { Image(uiImage: iconImage) .resizable() .frame(width: 50, height: 50) .cornerRadius(10) // 可选:匹配系统图标的圆角样式 } }
补充说明
applicationIcon(for:)会根据传入的尺寸返回最优的图标资源,从根源避免缩放模糊问题- 可根据需求调整
CGSize的数值,比如设置为60x60实现更大的图标 - 不需要自定义
LabelStyle,直接使用原生方法获取的图标就能达到WWDC视频中的大尺寸效果
内容的提问来源于stack exchange,提问作者Evgeny Mitko
相关产品推荐
相关产品推荐

