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