当前位置: 首页 > news >正文

iOS Widget 开发-3:Widget 的种类与尺寸(主屏、锁屏、灵动岛)

iOS 支持多种类型的 Widget,分布在主屏幕、锁屏、灵动岛、待机模式、控制中心等多个系统位置。每种 Widget 都有各自的尺寸、交互能力与限制。

本篇将系统梳理 iOS 当前支持的 Widget 类型与尺寸规格。


主屏 Widget(Home Screen Widgets)

主屏 Widget 自 iOS 14 起引入,是最基础也是使用最广泛的 Widget 类型。

支持的尺寸

WidgetFamily尺寸说明备注
.systemSmall小尺寸(1×1 单位)常用于图标+文本
.systemMedium中尺寸(2×1 单位)图文并列展示
.systemLarge大尺寸(2×2 单位)多列列表
.systemExtraLarge超大尺寸(4×2 单位)iPad 专属

特点

  • 可固定在主屏任意区域,支持 Smart Stack
  • 支持多实例与配置参数(如 Intent)
  • 默认不支持交互(按钮点击)
  • iOS 17+ 起支持 AppIntent 交互

AppIntent 交互(iOS 17 起)

通过 Button(action: intent)AppIntent,可以实现在 Widget 内部触发操作,如:打卡、点赞、收藏等。

Button(intent: MarkHabitDoneIntent()) {Image(systemName: "checkmark")
}

Widget 的按钮将通过系统后台发送 Intent,不打开 App 即可处理。


锁屏 Widget(Lock Screen Widgets)

iOS 16 起支持,适合展示 glance 信息,如天气、电量、步数等。
如果是 iPad,则是从 iPadOS 17 起开始支持。

支持的 WidgetFamily

WidgetFamily说明
.accessoryCircular圆形图标型 Widget(如天气)
.accessoryRectangular矩形展示(如日程、计步)
.accessoryInline状态栏嵌入型(如实时步数)

特点

  • 可展示在锁屏界面
  • 信息量较小,更新频率有限
  • 不支持传统点击交互,但支持 widgetURL 跳转

灵动岛与 Live Activity(ActivityKit)

iOS 16 引入了 Live Activity,结合灵动岛展示实时更新内容。

适用场景

  • 外卖配送进度、航班倒计时、赛事比分
  • 运动状态、专注计时、导航中状态

展示区域类型

类型描述
Compact状态栏左右小图标
Expanded长按或活动状态下展开,图文齐全展示

特点

  • 由 App 发起(startActivity)并定期更新状态
  • 使用 ActivityAttributes + SwiftUI 构建视图
  • 不是传统 WidgetFamily,但与 Widget 数据模型共享逻辑

StandBy Widget(待机组件)

iOS 17 起支持,iPhone 横屏充电时将自动进入待机模式,展示一组横屏视觉的锁屏组件或小组件。

支持尺寸:

WidgetFamily展示方式
.systemSmall左/右边栏小组件

特点:

  • 无需新注册 Widget,系统自动复用已注册的主屏或锁屏 Widget
  • 用户可在 StandBy 模式下左右滑动切换组件

控制中心组件(Control Center Widgets)

iOS 18 起,Apple 正式开放控制中心小组件支持,允许用户添加 App 提供的小组件至控制中心界面。

  • 用户可从控制中心编辑界面添加支持的 App 小组件
  • 支持 .accessoryCircular.accessoryRectangular 等样式
  • 支持 AppIntent 快速交互,例如:开启任务、触发指令、打卡行为等

控制中心组件为提升常用操作效率提供了极佳入口,适用于快捷命令类 App、小工具类 App 等。


iOS 小组件尺寸对照表(单位:点 pt,竖屏)

屏幕尺寸(竖屏)小(Small)中(Medium)大(Large)圆形(Circular)矩形(Rectangular)内联(Inline)
430×932170×170364×170364×38276×76172×76257×26
428×926170×170364×170364×38276×76172×76257×26
414×896169×169360×169360×37976×76160×72248×26
414×736159×159348×157348×35776×76170×76248×26
393×852158×158338×158338×35472×72160×72234×26
390×844158×158338×158338×35472×72160×72234×26
375×812155×155329×155329×34572×72157×72225×26
375×667148×148321×148321×32468×68153×68225×26
360×780155×155329×155329×34572×72157×72225×26
320×568141×141292×141292×311

iPadOS 小组件尺寸对照表(单位:pt,竖屏)

以下是 iPad 各机型在竖屏状态下,Widget 的显示尺寸对照表(单位为 pt)。

屏幕尺寸类型小(Small)中(Medium)大(Large)特大(ExtraLarge)
768×1024画布141×141305.5×141305.5×305.5634.5×305.5
设备120×120260×120260×260540×260
744×1133画布141×141305.5×141305.5×305.5634.5×305.5
设备120×120260×120260×260540×260
810×1080画布146×146320.5×146320.5×320.5669×320.5
设备124×124272×124272×272568×272
820×1180画布155×155342×155342×342715.5×342
设备136×136300×136300×300628×300
834×1112画布150×150327.5×150327.5×327.5682×327.5
设备132×132288×132288×288600×288
834×1194画布155×155342×155342×342715.5×342
设备136×136300×136300×300628×300
954×1373*画布162×162350×162350×350726×350
设备162×162350×162350×350726×350
970×1389*画布162×162350×162350×350726×350
设备162×162350×162350×350726×350
1024×1366画布170×170378.5×170378.5×378.5795×378.5
设备160×160356×160356×356748×356
1192×1590*画布188×188412×188412×412860×412
设备188×188412×188412×412860×412

✅ * “缩放显示”设为“更多空间”时。
📌 “画布”表示 Widget 视图内实际可用布局区域;“设备”表示渲染到系统界面时的占位大小
所有尺寸单位为点(pt)


小结

iOS Widget 类型已从主屏扩展至锁屏、灵动岛、StandBy 模式、控制中心等多个系统界面,开发者应针对不同 WidgetFamily 精细适配布局与交互:

  • 🏠 主屏适合展示图文组合与综合信息
  • 🔒 锁屏适合 glance 信息,限制更多
  • 🌙 灵动岛为实时状态展示,结合 ActivityKit
  • 🛌 StandBy 模式适合横向沉浸式信息展示
  • 🎛 控制中心小组件适合快速交互操作

在设计时务必关注系统支持版本、尺寸对齐、刷新策略与交互能力,结合 iOS 17+ AppIntent 实现更高效的无感交互体验。

最后,希望能够帮助到有需要的朋友,如果觉得有帮助,还望点个赞,添加个关注,笔者也会不断地努力,写出更多更好用的文章。

http://www.dtcms.com/a/269445.html

相关文章:

  • el-button传入icon用法可能会出现的问题
  • Unity开发如何解决iOS闪退问题
  • 数据分析-59-SPC统计过程控制XR图和XS图和IMR图和CPK分析图
  • 手机解压软件 7z:高效便捷的解压缩利器
  • 【机器学习笔记 Ⅲ】5 强化学习
  • C++异步编程入门
  • JVM 基础 - 类字节码详解
  • 编码器(Encoder)和解码器(Decoder)
  • 你好,你的小程序实际运营内容与名称简介不符,请上架符合小程序名称简介描述的正式内容/商品,或修改名称简介并保持服务内容与图文一致。
  • 【Linux】Redis 6.2.6 的二进制部署【适用于多版本】
  • Java 导出pdf 写出demo 1、需要设置自定义页眉和文字 2、可以插入表格 3、可以插入图片
  • MSPM0G3519-PA23 引脚无法使用
  • 小米YU7预售现象深度解析:智能电动汽车的下一个范式革命
  • Vue、Laravel 项目初始化命令对比 / curl 命令/ CORS 机制总结与案例
  • react的条件渲染【简约风5min】
  • Rust 仿射类型(Affine Types)
  • 在 Vue2 与 Vue3 中,面对 **大数据量交互体验优化** 和 **ECharts 大数据渲染性能优化**
  • 文风写作模仿各种公文范文快速生成初稿
  • MySQL字符串函数全解析
  • 设计模式笔记_创建型_建造者模式
  • Android 15应用适配指南
  • .NET9 实现对象深拷贝和浅拷贝的性能测试
  • 【Node.js】文本与 pdf 的相互转换
  • 大数据平台之ranger与ldap集成,同步用户和组
  • 手机、平板音频软件开发调测常用命令
  • 【字节跳动】数据挖掘面试题0013:怎么做男女二分类问题, 从抖音 app 提供的内容中。
  • Ubuntu 22.04 安装英伟达驱动
  • 【PTA数据结构 | C语言版】返回单链表 list 中第 i 个元素值
  • [论文阅读] 软件工程 | 自适应CPS中的人机协作与伦理
  • Spring Batch终极指南:原理、实战与性能优化