https://www.v2ex.com/t/1004449
不管是开发组件还是设计规范,都没有 Toast/HUD 这个东西, 对应用来讲这个东西还是挺重要的。不像 Alert 需要点击才能继续,Toast/HUD 可以给用户提示而不影响用户的操作。
苹果自己的应用中,比如 Apple Music 添加到 Library 也会有一个大的 Toast ,所以苹果也是有这样的东西。
如果这样基础的组件让应用自己发挥的话,各种各样的 Toast 很难统一。再加上现在的刘海屏和灵动岛,Toast 更是玩出了花。
而安卓系统,是有内置的 Toast 的,且不论样式好看与否,起码它有这样的基础控件。而且对于 react native 来讲,有直接封装好的原生控件。起码“原生”这个东西就很重要,有系统自己的优化,比如 Toast 层级会不会被 modal 所遮盖等。
所以,疑惑苹果为什么不出个 Toast 的设计规范/开发组件。
“不论样式好看与否”以及“Toast 层级会不会被 modal 所遮盖”。
首先是Toast的高度在哪都很难有个金标准,现在iOS上的类似的通知通常都是顶部的,而安卓toast是偏下部的,各个软件自己实现的通知也都偏向于顶部。想要一个通用组件挺难,我甚至觉得安卓的toast只是为了方便开发者偷懒,但凡注重设计一点的app都应该避免使用toast而使用更美观的通知样式。
模态框本身的层次级别就应该被仔细考虑,而不是欠考虑地,或者说又是偷懒的直接弹出来。只需要一点点业务层次上的思考就能决定的模态框层级却想要偷懒。iOS上不存在第三方应用可以在后台弹出消息的机制,除了通知栏和灵动岛。
不过其实最重要的应该是从人机交互的角度看,不应该有“出现了消息,短暂的延迟之后消息没有经过操作就消失了”这种让小白用户感觉困惑、不知所措的事情。实际上,iOS上很多模态框本身就是安卓上Toast地作用,比如失败提示、正在上传等等。iOS的交互设计指南上更提倡同步的交互,而toast是一个相对而言异步的设计,它不等待用户的反应。安卓开发指南则更提倡异步的设计,比如上传的时候用服务通知挂在通知栏而不是模态框阻止用户其他操作。