警告框向用戶提示會(huì)影響他們使用應(yīng)用或設(shè)備的重要信息。
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/alert_2x.png" alt="" />
API 備注
如需了解在代碼中使用警告框的信息,你可以設(shè)置一個(gè) UIAlertController 并設(shè)定 UIAlertControllerStyleAlert。
警告框:
警告出現(xiàn)的少會(huì)有助于用戶對(duì)其認(rèn)真對(duì)待。最好嚴(yán)格控制你的應(yīng)用里顯示的警告框數(shù)量,并確保每一個(gè)警告框都提供了重要信息和有用的選擇。
避免創(chuàng)建不必要的警告框。通常來說,警告框在以下這些場景中是不需要的:
如果警告框用來做這些事情… | 可以這樣做來代替警告框… |
---|---|
提供與應(yīng)用的標(biāo)準(zhǔn)功能相關(guān)的信息 | 設(shè)計(jì)一種引人注目但又和你的應(yīng)用的樣式相協(xié)調(diào)的方式去展示信息。 |
告知用戶任務(wù)正在正常進(jìn)行 | 使用進(jìn)度視圖或活動(dòng)指示圖(Progress View and Activity Indicator)又或?qū)顟B(tài)信息融入到應(yīng)用的界面中去。 |
要求用戶對(duì)發(fā)起的任務(wù)進(jìn)行確認(rèn) | 使用操作列表(在 Action Sheet)。 |
|告知用戶他們所不能解決的問題| 如果問題不是很嚴(yán)重,可以將信息放到應(yīng)用的界面中顯示,否則,請(qǐng)使用警告框。|
你將讀到的是警告文本設(shè)計(jì)指南,了解這些定義非常有用:
標(biāo)題大寫樣式指的是每一個(gè)單詞的首字母都要大寫,除了冠詞、并列連詞以及少于四個(gè)字母且不是第一個(gè)單詞的介詞。
簡明扼要地描述當(dāng)前情境,并告訴人們他們可以做什么。理想情況下,你撰寫的文本要給用戶足夠的情境,讓他們理解為什么警告框會(huì)出現(xiàn),以決定點(diǎn)哪個(gè)按鈕。
保持標(biāo)題足夠簡短,盡可能以一行顯示。冗長的警告標(biāo)題讓人難以快速閱讀,而且它還可能會(huì)被截?cái)嗷蛘咦尵嫦⑿枰獫L動(dòng)。
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/alert_title_only_2x.png" alt="image" />
避免一個(gè)詞的標(biāo)題。單個(gè)詞的標(biāo)題,比如錯(cuò)誤或警告,很少能提供任何有用的信息。
可能的話,盡量使用短句。一段簡潔清晰的陳述往往比一個(gè)完整的句子更容易理解。
盡可能撰寫一個(gè)不需要補(bǔ)充說明的標(biāo)題。例如,如果你用一個(gè)問句,或者偶爾是兩個(gè)短句,作為警告標(biāo)題,很可能你可以不需要添加消息說明。
不要刻意避免使用負(fù)面措辭。用戶理解大多數(shù)警告框都是為了告訴他們發(fā)生的問題,或者對(duì)危機(jī)情況做出警告。因此,負(fù)面但直接的措辭效果會(huì)好于正面但委婉的措辭。
盡可能避免使用“你”、“你的”,“我”和“我的”。有時(shí)候,這些直接指向人們的文本可能會(huì)引起歧義,甚至可能會(huì)被理解成侮辱或傲慢。
恰如其分地使用大小寫和標(biāo)點(diǎn)符號(hào)。具體來說:
當(dāng)警告框標(biāo)題… | 則使用… |
---|---|
是一個(gè)短句或一個(gè)簡單但又不是問句的句子 | 標(biāo)題大寫樣式,且句末沒有標(biāo)點(diǎn) |
是一個(gè)簡單的問句 | 句子大寫樣式,以問號(hào)結(jié)尾 |
由兩個(gè)或更多的句子組成 | 句子大寫樣式,為每個(gè)句子選用合適的結(jié)束標(biāo)點(diǎn) |
如果必須為警告框提供一條可選的消息正文,請(qǐng)撰寫一個(gè)簡短、完整的句子。如果可能,盡量讓消息足夠簡短以便能在一兩行之間顯示。如果消息過長導(dǎo)致警告框出現(xiàn)滾動(dòng)條,這會(huì)給用戶以糟糕的體驗(yàn)。在消息中使用句子大寫樣式,并以合適的標(biāo)點(diǎn)作為結(jié)束。
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/alert_title_with_msg_2x.png" alt="image" />
避免在警告文本中描述點(diǎn)擊哪個(gè)按鈕從而導(dǎo)致文本過長。理想情況下,清楚明白的警告文案和合乎邏輯的按鈕標(biāo)題能給人足夠的信息去理解當(dāng)前情況并作出選擇。如果你需要提供詳細(xì)的指引,請(qǐng)遵循以下準(zhǔn)則:
確保警告框在豎屏和橫屏方向上顯示正常。橫屏方向中的警告框高度會(huì)有所限制,可能會(huì)和豎屏方向中的樣子不太一樣。建議你優(yōu)化警告文本的長度,以便在兩種方向上不用滾動(dòng)都可以被閱讀。
一般來說,使用兩個(gè)按鈕的警告框。兩個(gè)按鈕的警告框通常是最有用的,因?yàn)閷?duì)人們來說在兩個(gè)按鈕之間做出選擇最容易。單個(gè)按鈕的警告狂就不那么有用,因?yàn)樗ǔV皇翘崾居脩簦]有賦予用戶任何對(duì)當(dāng)前狀況的控制能力。包含三個(gè)或三個(gè)以上按鈕的警告框明顯比雙按鈕警告框復(fù)雜,應(yīng)該盡可能避免使用。如果你在一個(gè)警告況中添加了太多按鈕,它會(huì)導(dǎo)致警告框要滾動(dòng)。這將是一種糟糕的用戶體驗(yàn)。
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/two_button_alert_2x.png" alt="image" />
注意
如果你發(fā)現(xiàn)需要向用戶提供超過兩個(gè)的選擇,可以考慮使用操作菜單以代替(如需了解如何使用操作菜單,請(qǐng)參閱 Action Sheet)。
合適放置按鈕。理想情況下,最自然的點(diǎn)擊按鈕應(yīng)符合兩個(gè)標(biāo)準(zhǔn):它執(zhí)行了用戶最想要的操作;即使用戶不小心誤點(diǎn)也不會(huì)造成嚴(yán)重問題。具體來說:
如果按鈕不會(huì)造成破壞性后果,而這又是用戶最有可能的操作,那么它應(yīng)當(dāng)在雙按鈕警告框的右邊。取消按鈕則應(yīng)該在左邊。
注意
在警告框顯示時(shí)點(diǎn)按主屏幕按鈕,應(yīng)如預(yù)期的那樣退出此應(yīng)用。這樣做的效果類似于輕點(diǎn)取消按鈕——即警告框被取消且操作沒有被執(zhí)行。
為警告框按鈕撰寫簡短而合乎邏輯的標(biāo)題。好的按鈕標(biāo)題一般只有一到兩個(gè)詞,描述了輕點(diǎn)按鈕后的結(jié)果。當(dāng)你在創(chuàng)建警告框按鈕的標(biāo)題時(shí),請(qǐng)遵循下面這些準(zhǔn)則:
操作菜單顯示與用戶所發(fā)起的任務(wù)直接相關(guān)的一系列選項(xiàng)。
橫屏方向下,操作菜單從屏幕底部出現(xiàn)
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/action_sheet_iphone_2x.png" alt="image" />
豎屏方向下,操作菜單通常會(huì)在彈出窗口中顯示
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/action_sheet_ipad_2x.png" alt="image" />
API 備注 在代碼中使用操作菜單,你可以定義一個(gè) UIAlertController 并設(shè)置 UIAlertControllerStyleActionSheet。
操作菜單:
使用操作菜單可以:
提供完成一項(xiàng)任務(wù)的不同方法。操作列表讓你可以提供在當(dāng)前任務(wù)情境中奏效的一系列選項(xiàng),而且這些選項(xiàng)不會(huì)永遠(yuǎn)在UI中占據(jù)位置。
在橫屏下,要放置取消按鈕以便使用戶可以輕松但安全地放棄任務(wù)。將取消按鈕放置在操作列表的底部,有利于用戶在選擇前通讀所有選項(xiàng)。
在豎屏下,基于用戶發(fā)起任務(wù)的方式來決定操作列表的顯示方式。如下:
如果任務(wù)從以下情境中發(fā)起… | 則顯示操作列表時(shí)… | 是否包含取消按鈕? |
---|---|---|
從彈出窗口外 | 不需要?jiǎng)赢嫛床僮髁斜砗蛷棾龃翱谕瑫r(shí)出現(xiàn) | 否,因?yàn)橛脩艨梢栽趶棾龃翱谝酝廨p點(diǎn)就能讓操作列表消失 |
在彈出窗口中 | 需要?jiǎng)赢嫛床僮髁斜韽膹棾龃翱趦?nèi)容的頂端滑出 | 是,因?yàn)橛脩粝M挥藐P(guān)閉彈出窗口也能取消操作列表 |
無論在何種設(shè)備上,均使用紅色來標(biāo)識(shí)那些執(zhí)行潛在破壞性操作的按鈕。在操作列表頂部顯示紅色按鈕,因?yàn)樵娇拷僮髁斜眄敳康陌粹o越容易引人注意。
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/action_sheet_red_button_2x.png" alt="image" />
避免讓用戶滾動(dòng)操作列表。如果你的操作列表中存在太多按鈕,用戶必須要滾動(dòng)才能看完所有選項(xiàng)。這對(duì)用戶來說是一種煩躁的體驗(yàn),因?yàn)樗麄儽仨毣ǜ嗟臅r(shí)間來分辨這些選項(xiàng)。同樣,用戶在滾動(dòng)時(shí)很可能會(huì)誤點(diǎn)某個(gè)按鈕。
模態(tài)視圖——是一個(gè)以模態(tài)形式展現(xiàn)的視圖,它為當(dāng)前任務(wù)或情境提供自包含(self-contained)的功能。
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/modal_view_mail_compose_2x.png" alt="image" />
API備注
在你的代碼中使用模態(tài)視圖,可以定義一個(gè) UIPresentationController 并設(shè)置合適的樣式(更多樣式,請(qǐng)參閱 Modal Presentation Styles)。
模態(tài)視圖:
當(dāng)需要完成和你的應(yīng)用的基本功能相關(guān)的自包含任務(wù)時(shí),你可以使用模態(tài)視圖。模態(tài)視圖尤其適用于那些所需元素在應(yīng)用的主要界面中并非一直出現(xiàn)且有多個(gè)步驟的子任務(wù)。
選擇一種適合當(dāng)前任務(wù)以及應(yīng)用視覺風(fēng)格的模態(tài)視圖樣式。你可以使用如下定義的任何一種樣式:
模態(tài)視圖樣式 | +|全屏 | 占據(jù)整個(gè)屏幕。 |呈現(xiàn)一個(gè)較為復(fù)雜的任務(wù),用戶可以在模態(tài)視圖情境內(nèi)部完成這個(gè)任務(wù)。|外觀 | +|頁面列表| 在橫屏?xí)r,采用部分包含基本內(nèi)容的視圖。未包含的區(qū)域變暗,防止用戶與其進(jìn)行交互。(橫屏?xí)r,與全屏視圖的效果相同) | 呈現(xiàn)一個(gè)較為復(fù)雜的任務(wù),用戶可以在模態(tài)視圖情境內(nèi)部完成這個(gè)任務(wù)。|推薦用于 | +|表格列表| 在橫屏?xí)r,在屏幕上居中對(duì)齊。未包含的區(qū)域變暗,防止用戶與其進(jìn)行交互。在某些情況下,鍵盤出現(xiàn)時(shí)模態(tài)視圖的位置進(jìn)行調(diào)整。(橫屏?xí)r,與全屏視圖的效果相同)| 從用戶那里獲取結(jié)構(gòu)化信息|
---|---|---|
全屏 | 占據(jù)整個(gè)屏幕。 | 呈現(xiàn)一個(gè)較為復(fù)雜的任務(wù),用戶可以在模態(tài)視圖情境內(nèi)部完成這個(gè)任務(wù)。 |
頁面列表 | 在橫屏?xí)r,采用部分包含基本內(nèi)容的視圖。未包含的區(qū)域變暗,防止用戶與其進(jìn)行交互。(橫屏?xí)r,與全屏視圖的效果相同) | 呈現(xiàn)一個(gè)較為復(fù)雜的任務(wù),用戶可以在模態(tài)視圖情境內(nèi)部完成這個(gè)任務(wù)。 |
表格列表 | 在橫屏?xí)r,在屏幕上居中對(duì)齊。未包含的區(qū)域變暗,防止用戶與其進(jìn)行交互。在某些情況下,鍵盤出現(xiàn)時(shí)模態(tài)視圖的位置進(jìn)行調(diào)整。(橫屏?xí)r,與全屏視圖的效果相同) | 從用戶那里獲取結(jié)構(gòu)化信息 |
當(dāng)前情境 | 使用與父視圖一樣的尺寸 | 在分欄視圖窗格、彈出窗口或其他非全屏視圖內(nèi)部顯示模態(tài)內(nèi)容 |
不要在彈出窗口底部顯示模態(tài)視圖。除警告外,沒有任何元素顯示在彈出窗口之上。在極少數(shù)情況下,用戶在彈出窗口進(jìn)行的操作結(jié)果必須要以模態(tài)視圖展現(xiàn),那也請(qǐng)?jiān)谀B(tài)視圖出現(xiàn)前先將彈出窗口關(guān)閉。
確保模態(tài)視圖的整體外觀與你的應(yīng)用的外觀相協(xié)調(diào)。例如,模態(tài)視圖常常包含一個(gè)導(dǎo)航欄,而導(dǎo)航欄又包含標(biāo)題和取消完成視圖任務(wù)的按鈕。在這種情況下,模態(tài)視圖的導(dǎo)航欄應(yīng)當(dāng)使用和應(yīng)用導(dǎo)航欄相同的外觀。
如果合適,在所有設(shè)備上都顯示一個(gè)說明任務(wù)內(nèi)容的標(biāo)題。你也許還需要在視圖的其它區(qū)域中顯示文本,以完整描述任務(wù)內(nèi)容或一些指引。
在所有設(shè)備上,選擇一個(gè)合適的轉(zhuǎn)場樣式來展現(xiàn)模態(tài)視圖。使用和你的應(yīng)用相協(xié)調(diào)的轉(zhuǎn)場樣式,可以提升用戶對(duì)模態(tài)視圖所代表的臨時(shí)情境轉(zhuǎn)換的感知,要做到這一點(diǎn),你可以從以下轉(zhuǎn)場樣式中選擇一個(gè):
垂直型。在垂直樣式中,模態(tài)視圖會(huì)從屏幕底部向上滑入,在被取消時(shí)向下滑出(這是默認(rèn)的轉(zhuǎn)場樣式)。
如果你在應(yīng)用中改變當(dāng)前模態(tài)視圖的轉(zhuǎn)場樣式,請(qǐng)確保這種改變對(duì)用戶有價(jià)值。用戶很容易就能注意到應(yīng)用中的行為變化,并且會(huì)認(rèn)為這些變化的特別含義。因此,最好是建立一種合乎邏輯并保持一致的范式,讓用戶可以輕松感知并記憶。在沒有充分理由時(shí),避免改變轉(zhuǎn)場樣式。