教程

10

阅读时间

如何在 ProtoPie 的汇款应用中格式化货币

了解如何使用“format()”函数将数字显示为美元和美分、英镑和便士、欧元等。

杰夫·克拉克, 用户体验设计师与 ProtoPie 培训师

快速概述

在转账应用设计中,你经常会看到一种交互:用户输入一些数字——例如,他们想转给朋友的金额——然后界面会将该金额按货币格式回显,例如 $45.33。

在本课中,你将学习如何使用 ProtoPie 的一个内置函数,将数字输入以常见货币格式呈现。


Transfer Screen Prototype Made With ProtoPie

起始 Pie 文件完整 Pie 文件

你将学到什么

在本课中你将学习:

  • 如何使用 ProtoPie 内置的 format() 函数

  • 如何在公式中将多段文本组合在一起

  • 如何自动显示设备原生键盘

  • 如何显示数字键盘而不是常规字母键盘。

完成时间:≤10 分钟

开始之前

打开起始 Pie,其中包含一个模拟支付应用的单个界面。我们将使用用户输入要发送给联系人的金额的那个界面。我们只希望用户输入数字。例如,如果用户输入 5,我们的交互应将其解释为 5 美分,并显示为 $0.05。如果用户输入 50,我们将显示 $0.50。如果用户输入 505,我们将显示 $5.05,以此类推。最后,我们希望在用户输入时实时更新显示。

视频

分步操作

第 1 部分:设置输入

我们需要一种方式来捕获用户输入。

  • 在画布中添加一个输入图层。暂时将它放在“Transfer amount”图层和“Continue”按钮之间即可。

  • 保留图层默认名称 Input 1

  • 我们稍后会将其隐藏,所以先不用担心尺寸、字体、颜色等。


Add an Input layer to your canvas

如果你现在预览,会看到点击输入框时弹出的是普通字母键盘。


the normal alphabetic keyboard

我们来把它改成显示数字键盘。

  • 在画布中选中输入框后,滚动右侧属性面板到底部,找到“Keyboard Options”部分。

  • 在“Type”下拉菜单中,你可以选择字段聚焦时出现的键盘。选择“Number”。


Change the keyboard option to number

现在预览时,你会看到点击输入框会弹出数字键盘。


numeric keyboard in the preview window

我们希望场景开始时键盘自动出现。

  • 添加一个 Start 触发器。

  • 当 Input 图层获得焦点时键盘会出现。在 Start 触发器下,为 Input 1 图层添加一个 Focus 响应,并确保选择“Focus In”。


Add a Focus trigger to the input layer

再次预览。场景开始时 Input 1 图层应处于聚焦状态,从而触发键盘出现。不过,如果你点击 Input 图层外部,它会失去焦点,键盘会消失。我们希望键盘始终保持在屏幕上,因此需要进一步配置,确保 Input 图层不会意外失焦。

再次滚动到 Input 的属性底部,找到“Focus Out Options

  • 取消勾选“Tap Return Key

  • 取消勾选“Tap outside of Input Layer


Change the focus out options

再次预览。现在你会看到无论点击哪里,Input 图层都会保持聚焦,键盘也会始终显示在屏幕上。

第 2 部分:将输入格式化后显示

我们希望在用户输入时实时更新显示。

  • 为 Input 图层添加一个 Detect 触发器,并将其设置为检测 Input 1 的 Text 属性变化。


Add a Detect Trigger to the Input layer

💡 复习:Detect 触发器会在所选对象属性或所选变量值每次发生变化时都会触发。

现在来显示输入内容!

  • Detect 触发器下添加一个 Text 响应。

  • 选择 Transfer amount 图层。

  • 在 Content 下选择“Formula


Add a Text Response under the Detect Trigger

继续之前,我们先看看 ProtoPie 的 format() 函数,它允许你按特定方式展示数字信息。例如可添加千位分隔符,并将数字显示为指定小数位。它接收两个参数:

  • value - 你希望格式化的原始数字——在本例中是用户输入的内容

  • format - 表示你希望如何格式化该数字的模式。

它看起来是这样:

format(value:NUMBER,format:TEXT)

format 参数最多由四种关键字符组成:

  • # 用于表示格式中的整数部分

  • 0 用于表示格式中的小数部分

  • 小数字符(例如北美使用 .

  • 分隔符字符(例如用 , 作为千位分隔符)

我们来看一些示例:

  • format(1234.567, "#") 将输出 1235。格式中未指定小数位,因此只得到整数。注意输出是四舍五入后的结果。

  • format(1234.567, "#,###") 将输出 1,235。这指定了分隔符字符,连续三个 # 表示该分隔符将作为千位分隔符使用。

  • format(1234.567, "#,##") 将输出 12,35。与上面类似,不同之处在于分隔符后只有连续 2 个 #,因此它作为百位分隔符。

  • format(1234.567, "#,###.00") 将输出 1,234.57。这会将 . 设为小数字符并保留两位小数。注意输出会四舍五入到最接近的百分位。

  • format(1234.567, "#.###,00") 输出 1.234,57。这与上面的格式相同,但 . 用作分隔符,, 用作小数字符。这是在欧洲及世界其他地区常见的数字格式。

💡 最后一个示例展示了 format() 函数如何用于针对特定受众进行本地化。

在我们的案例中,我们将使用北美“美元+美分”格式,如下所示:

  • $1,234.57

上面的第四个示例给出了该格式中的数字部分。我们需要在公式中单独拼接 $ 字符。来看实际效果!

  • 在刚创建的 Text 响应中,使用以下公式:

  • "$" + format(Input 1.text, "#,###.00")


Use formula in the Text Response

💡 这里发生了什么:

每当你处理未知——或动态——信息时,都需要使用公式来用动态信息“填空”。在我们的例子中,我们不知道用户会输入什么。因此,不像示例里那样使用明确数字,我们将 Input 1 图层的 text 属性作为 format 函数的第一个参数传入。ProtoPie 会在执行公式时将其替换为实际输入内容。

另外请注意,我们把 $ 字符添加到了输出开头。我们用 + 字符把两段文本——美元符号和格式化后的数字——连接在一起。如果你想使用其他货币符号,例如 £,将公式中的 $ 替换为所需符号即可。

来预览一下!我们几乎达到了想要的效果,但注意无论输入什么,你得到的都只是整美元金额,小数点右侧没有美分。


Check in the preview window

这是因为我们传入的输入始终是整数。我们希望 ProtoPie 将上述输入解释为 123.45,而不是 12345。因此需要在 format 处理前,用一些基础数学把输入除以 100。

按如下方式修改公式:

  • "$" + format(``Input 1``.text / 100, "#,###.00")


Modify the formula

💡 由于标准键盘上没有 ÷ 键,程序员很早就约定在计算中使用 / 字符表示除法。同样,* 用于乘法。

再预览一次。现在我们的格式化应当已经完全正常工作了!


Check in the preview window

最后做一点收尾:把 Input 输入框隐藏起来。你可以有几种做法。可以将图层不透明度设为 0——这样完全可行——但在这种场景下,我更倾向于保持图层可见但移到屏幕外。这样可提醒我或未来需要编辑这个 Pie 的其他人:这个交互包含一个隐藏的输入图层。


Move the input layer outside of the screen


Preview the final effect

数字格式化……像 Pie 一样简单!

在本课中,你学习了如何使用 ProtoPie 灵活的 format() 函数,将数字输入正确显示为货币金额。你还学习了如何使用设备原生键盘,在隐藏字段中捕获用户输入。

想了解更多?

[这有帮助吗?请告诉我们!]