《iOS Human Interface Guidelines》——Starting and Stopping

本博客详细阐述了如何在iOS应用启动时优化用户体验,包括减少启动时间、避免不必要的提示、合理利用启动页、延迟登录要求、提供个性化设置等关键策略。同时,文章还强调了在应用重启时保持状态的连续性和处理崩溃或功能失效的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

立即开始


一般经常认为人们最多花一到两分钟时间来评估一个新的app。当你充分利用这段简短的时间立马展示有用的内容时,可以挑起新用户的兴趣并且给所有的用户一个超凡的体验。


IMPORTANT

不要告诉用户在安装你的app后重启设备。重启需要时间,而且会使你的app看上去不可靠以及难以使用。

如果你的app有着内存使用或其他问题让其必须在系统刚启动时才能运行的话,你需要处理这些问题。查看Use Memory Efficiently获取一些开发一个优化的app的指导。


尽可能地避免展示一个启动画面或者其他启动体验。用户能立即使用的你的app是最好的。


                                            



避免要求用户提供设置信息。换成:

  • 专注于80%的用户的需求。当这样做时,大部分人们不需要去提供任何设置信息,因为app已经按照他们预期的来设置了。如果有功能只有一小部分用户需要——或者大部分用户只需要一次——舍弃它。
  • 从其他来源获取尽可能多的信息。如果你可以使用任何人们在安装app时提供的或者设备的设置中的信息,向系统查询这些值;不要要求人们再输入一遍。
  • 如果你必须获取设置信息,提示人们在你的app内输入它们。然后尽快存储这些信息(在你的app的设置里)。这样用户就不会在享受你的app之前被强制去切换到设置里。如果人们需要在之后修改这些信息,他们可以在任何时间去app的设置里改。

尽可能地推迟登录的要求。用户最好可以在没有登录的情况下进入你app的大部分界面并使用一些功能。比如说,App Store在用户决定要购买一些东西之前都不会要求用户登录。用户经常抛弃那些在他们没有使用任何功能前就强迫他们登录的app。

如果用户必须登录,在登录界面给出一个简短的、友好的解释说明登录的理由以及这能给他们带来什么好处。

在提供启动页前小心的考虑。(启动页介绍了一个app的功能以及解释如何执行一般的任务。)当你考虑启动页之前,尽力去设计你的app使其功能和任务都是直观而易于发现的。启动页并不是一个好的app设计的替代品。如果你仍然觉得启动页是必须的,遵循以下这些指导来创建一个简单的、目标明确的体验,而不妨碍到用户。

  • 只给用户他们开始使用需要的信息。一个好的启动页体验会告诉用户首先需要做些什么,或者简短地示范一些大部分用户感兴趣的功能。如果在用户有机会探索你的app之前给了太多的信息,会让你的用户觉得要记住一些他们暂时不需要的细节,并且会觉得你的app很难使用。如果在一些具体的任务上需要额外的帮助,只在用户执行这些任务时提供这些帮助。
  • 使用动画和交互来吸引用户,并帮助他们在做中学。只在文字能丰富体验时添加少量的文字;不要指望用户去阅读长篇大论。比如说,不要在可以用动画告诉用户如何使用时用文字去描述怎么执行的一个简单的任务。引导用户去执行一个更复杂的任务时,你可以添加一个短暂地的覆盖视图去简要地描述用户将要做的每一步。尽量避免使用app的截屏,因为他们不是交互式的而且用户会把他们和app的UI弄混。
  • 让用户可以简单地去除或跳过启动页。在用户看了启动页之后,他们也许不会想再看一次;还有一些用户也许根本就不想看到它。确保记住用户的选择并且不要让用户在每一次打开你的app时都再做一次。

不要太早地要你的用户评价你的app。太早地要求评价会打扰用户,也会降低得到的反馈的实用性。要鼓励深思熟虑的反馈,就要确保用户在你要求评价之前对你的app形成一个看法。比如说,你可以等到用户浏览了一个最低限度的不同界面的数量或者执行了一个最低限度的任务的数量再要求。

一般来说,在设备当前的方向下启动。不过,如果你的app只在一个方向上运行,你应该一直在那个方向上启动然后让用户旋转他们的设备。比如说,如果一个游戏或者视频app只在横向上运行,横向启动是最合适的,即使设备现在是垂直的。这样的话,如果用户在设备是垂直时启动app,他们就知道要旋转设备来查看内容了。




NOTE
一个只支持横向的app最好可以支持各种横向——就是说,Home键在左边或者在右边都可以。如果设备已经是横向的了,一个只支持横向的app应该在当前这个横向上启动,除非有很好的理由不这么做。否则,就在Home键在左边或者右边的横向都要能够启动。(查看 Adaptivity and Layout来学习更多关于支持不同设备方向的内容。)

提供一个启动文件。iOS在你的app启动时展示一个图片——让你的用户觉得你的app很快,并能给你的app足够的时间去启动。查看Launch Files来学习如何创建一个启动文件。

如果可能的话,避免要求用户在他们做任何其他事情之前去阅读一个免责声明或者同意一个终端用户许可协议。你可以让App Store来展示你的免责声明或者终端用户许可协议(EULA),这样人们可以在他们获取到app之前访问这些内容。如果你必须在你的app内提供这些条目,确保让他们和你的UI和谐地融合在一起,并平衡好商业需求和用户体验的需求。

当你的app重启时,修复它的状态这样用户就可以在他们退出的地方继续。人们不应该要记住他们到达之前所在界面的步骤。查看Preserving Your App‘s Visual Appearance Across Launches来学习更多关于保护和修复你的app的状态的有效方式。




永远准备停止

一个iOS app从不提供一个关闭或退出选项。人们会在切换到其他app、回到主屏幕或者让他们的设备进入睡眠模式时停止使用这个app。

当用户从你的app中切换出去时,iOS多任务处理器会将其过渡到后台去并且用新切换的app UI代替原有的UI。为这个情况做准备,你应该:

  • 尽可能快的并以尽量合理的频率保存用户数据。做这个是因为在后台的app会随时被告知退出或终止。
  • 尽可能在停止时保存当前最好的细节状态。这样做的话,人们在重新切回你的app时不会失去他们的使用环境。比如说,如果你的app展示滚动数据,保存当前滚动的位置。查看Preserving Your App‘s Visual Appearance Across Launches来学习更多关于保护和修复你的app的状态的有效方式。

一些app需要在用户前台运行其他app时保持在后台运行。比如说,用户会希望在他们使用一个app去检查他们的to-do列表或者玩一个游戏时,持续在另一个app中听歌。查看Multitasking来学习如何准确和得体地处理多任务。

永远不要以编程的方式退出一个iOS app。人们倾向于将这种情况视为闪退。如果某些东西因为功能问题阻止了你的app正常运行,你需要告诉用户这个情况并且解释他们可以为这个情况做些什么。这里有两个好方法:



如果所有的app功能都无法获取,展示一个界面描述当前的状态并给出一些修复的建议。这些信息可以给予用户反馈并让他们安心,说明你的app本身并没有出任何问题。这也可以让用户来控制,让他们决定是进行修复来继续使用你的app还是切换到其他的app。




如果只有部分的app功能无法获取,当人们想要使用这个功能是显示一个界面或者一个警告框来告诉人们。否则,人们可能会使用其他的app。如果你打算使用一个警告框,确保只在人们尝试获取无法获取的功能时才显示它。



本文翻译自苹果官方开发文档

查看完整合集:https://github.com/Cloudox/iOS-Human-Interface-Guidelines

版权所有:http://blog.youkuaiyun.com/cloudox_

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在 Android 开发中,Fragment 是界面的一个模块化组件,可用于在 Activity 中灵活地添加、删除或替换。将 ListView 集成到 Fragment 中,能够实现数据的动态加载与列表形式展示,对于构建复杂且交互丰富的界面非常有帮助。本文将详细介绍如何在 Fragment 中使用 ListView。 首先,需要在 Fragment 的布局文件中添加 ListView 的 XML 定义。一个基本的 ListView 元素代码如下: 接着,创建适配器来填充 ListView 的数据。通常会使用 BaseAdapter 的子类,如 ArrayAdapter 或自定义适配器。例如,创建一个简单的 MyListAdapter,继承自 ArrayAdapter,并在构造函数中传入数据集: 在 Fragment 的 onCreateView 或 onActivityCreated 方法中,实例化 ListView 和适配器,并将适配器设置到 ListView 上: 为了提升用户体验,可以为 ListView 设置点击事件监听器: 性能优化也是关键。设置 ListView 的 android:cacheColorHint 属性可提升滚动流畅度。在 getView 方法中复用 convertView,可减少视图创建,提升性能。对于复杂需求,如异步加载数据,可使用 LoaderManager 和 CursorLoader,这能更好地管理数据加载,避免内存泄漏,支持数据变更时自动刷新。 总结来说,Fragment 中的 ListView 使用涉及布局设计、适配器创建与定制、数据绑定及事件监听。掌握这些步骤,可构建功能强大的应用。实际开发中,还需优化 ListView 性能,确保应用流畅运
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值