当前位置: 首页 > 科技观察

各大厂商高手出品:这两款苹果控件你一定分不出来!

时间:2023-03-14 18:53:40 科技观察

你好,没想到这么快就过年了。今天,我们就来说说苹果规范中两个容易混淆的东西,actionsheet和activityview。这两个组件都是通用组件,操作表出现得更早。后来出现的ActivityView的布局违反了ActionSheet的一些设计理念和规则,Apple规范对此也含糊不清,所以有同学对如何设计底部浮层(或面板)产生了很多疑惑).那么今天我们就从其发展历史的角度来谈谈它们的区别,以及我们应该如何对待“规范”。可以说,规范的演变就是不断吃书的过程。Actionsheet演变历史Actionsheet是最早一批在设计规范中提供的标准组件。与其他组件相比,Apple对actionsheet的定义和迭代并不多,风格也没有明显变化。.在2008年iPhoneOS2时代的规范中,actionsheets、alerts和modalviews被归类为不同类型的视图。其实,“观景”这个词一直很模糊。我猜这个名词来源于MVC设计模式,是开发设计时代遗留下来的名词。现在Apple将视图解释为“应用程序用户界面的基本构建块”,我个人将视图理解为按照原子系统的“页面模板”。从一开始,操作表就有两个目的:容纳用户当前任务的多个操作。这样就不需要把这些操作都显示在页面上了。在进行有风险的操作之前,您可以使用操作表进行再次确认。根据这两种用途,2008年动作片的使用说明和规则总的来说有以下几点:底部必须有一个取消按钮,并且除了取消按钮外至少要有2个动作按钮。点击action按钮后,actionsheet会消失Actionsheet上没有写说明文字,因为是用户主动点击的页面,用户可以根据当前任务推断这个浮层的作用和按钮文本。综合以上几点,我们可以看出2008年前后的移动行业还是比较单一的。第二条规则让actionsheet成为一个临时的不稳定容器,只能承载操作按钮,从而排除了使用actionsheet做多级复杂任务的可能性,也没有提及任何与可扩展性相关的解决方案。2011年,苹果进一步解释了actionsheet:解释了将取消按钮放置在页面底部的作用:鼓励用户在做出选择之前阅读所有选项。用红色按钮强调危险/破坏性的行为。垂直滑动是不允许的,因为:太长的面板可能会导致用户花太长时间思考每个选项;垂直滑动可能会导致误触。此后,形成了动作片的几个重要规格。虽然2014年取消了“点击action按钮后actionsheet会消失”和“不要在actionsheet上写描述文字”的说明,让它的扩展性稍微好一点,但是从苹果对垂直滑动的限制来看,从强调“取消”按钮,可以看出操作单还是临时性的,倾向于不让用户停留太久,完成更复杂的任务。iOS14之后,苹果提供了新的组件菜单来存储操作,从而进一步限制了actionsheet的使用场景。iOS14版规范将actionsheet总结为alert警告弹窗,“只有破坏性操作才能使用actionsheet,否则应该使用menu”。但是,在后续的版本迭代中,该声明发生了变化。现在actionsheet基本上是用来承载与“用户发起的操作”直接相关的功能,比如删除/离开前的重新确认,而不是承载“主页面存储”。“无法降低的二次操作”功能。Activity视图的演进历史Activity视图是为“分享”的功能而定制的。目前为止,它的使用场景基本仅限于分享,很少看到其他场景使用这样的布局,但个人认为未来有扩展场景的潜力。苹果一直都有“分享”功能。这个功能最开始是使用actionsheet实现的,然后在iOS6时期从actionsheet修改了图标样式(可惜没说为什么改)。在iOS6时代,苹果并没有成熟的app-to-app分享功能。当时只支持facebook、twitter、微博等少数几个有限的app。因此,在页面设计中没有考虑可扩展性。iOS7之后,苹果进行了两次重要的功能迭代:允许应用商店中的大量第三方应用接入“分享”功能。这导致分享页面的操作数量不定。空投功能已经上线,可能是因为这个功能推广的比较早。iOS7允许图片在当前页面多次分享给不同的人,所以只支持单次操作。工作表不能再满足请求。因此,基于这两个重要的功能变化,诞生了我们熟悉的水平滑动版的Activity视图。我们不知道ActivityView设计到底想解决什么样的问题,因为它在规范中说的也比较模糊。只能说从它最终的渲染图来看,与之前的设计相比有这些变化:当Activity视图在iOS7规范中首次出现时,它是一个“controller”控制器,而不是一个完整的页面,这使得它添加“取消”按钮,变成一个类似于actionsheet的模态,也可以作为页面的一个元素,页面左上角有“取消”按钮。我个人认为这样的设计是比较多余的。页面允许水平滑动后,“取消”按钮必须放在页面底部的理由根本无效,因为用户的视线不一定是从上到下阅读,但可能是从从左到右,根本没有低头看。没有必要为了符合actionsheet的规范而做两套功能完全一样的layout。活动视图采用大图标而不是垂直文本列表。从迭代趋势可以合理猜测,接入第三方平台后,图片图标的识别效率要高于纯文字。活动视图允许滚动。这也违背了actionsheet“面板不允许垂直滑动”的推理。显然,这是因为第三方平台接入的App数量不确定,而要保证部分系统操作(复制/投射等)能在首屏显示,只能通过横向滑动来实现。当然,iOS7的Activity视图还有一些其他的问题。基于这些问题,ActivityView再次改版,这是iOS13目前的风格。从那时起,活动视图就完全摆脱了早期动作表规范的影响。允许垂直滑动,不添加底部取消按钮,支持用户在该页面进行多级相对复杂的操作(如点击空投弹出二级弹窗,但不关闭活动视图).总而言之,按照目前苹果的规范:actionsheet更专注、更快速,不支持多级操作,更多用于再确认场景。Activity视图暂时用于共享场景,扩展性更强,支持多级操作。《写在最后》讲了那么多跟进化史相关的东西。其实我们也可以看到,像苹果这样的操作系统,迭代是非常谨慎和缓慢的。从actionsheet到activityview,苹果用了将近10年的时间。而我们日常的设计迭代速度和反应时间肯定比苹果快。所以在设计的时候不要简单照搬操作系统的规范,而是要思考什么更适合场景。