譯文 | iOS 10 人機(jī)界面設(shè)計(jì)指南 (完結(jié))

4 評(píng)論 12603 瀏覽 102 收藏 65 分鐘

iOS10發(fā)布了,蘋(píng)果遵循了一切從簡(jiǎn)但又增加了一些提升用戶體驗(yàn)的功能,比如向開(kāi)發(fā)者開(kāi)放了更多接口,設(shè)計(jì)者又如何跟隨iOS的步伐做好產(chǎn)品設(shè)計(jì)呢?本文是系列文章的完結(jié)篇,enjoy~

7. UI視圖(UI Views)

7.1 操作列表(Action Sheets)

操作列表是一種對(duì)某個(gè)控件或操作作出應(yīng)答的特殊形式的警告框,它展示了與當(dāng)前內(nèi)容相關(guān)的一組選項(xiàng)(兩個(gè)或更多)。使用操作列表讓用戶觸發(fā)任務(wù),或是在用戶執(zhí)行某個(gè)有潛在破壞性的操作前請(qǐng)求用戶確認(rèn)。在小屏幕,操作列表從屏幕底部向上滑出。在大屏幕,操作列表會(huì)以浮出層的形式突然出現(xiàn)。

提供取消按鈕,如果它能加強(qiáng)明確性。當(dāng)用戶想要放棄任務(wù)時(shí),取消按鈕給予了他們信心。屏幕底部出現(xiàn)的操作列表最下方應(yīng)該有個(gè)取消按鈕。

突出破壞性的選項(xiàng)。對(duì)那些執(zhí)行破壞性或危險(xiǎn)操作的按鈕使用紅字,并且在操作列表的頂部放置這些按鈕。

避免讓用戶滾動(dòng)操作列表。如果操作列表有太多選項(xiàng),用戶就必須通過(guò)滾動(dòng)查看所有的選項(xiàng)。滾動(dòng)需要用戶花更多的時(shí)間做決定,并且在滾動(dòng)過(guò)程中容易誤點(diǎn)某個(gè)選項(xiàng)。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UIAlertController中的UIAlertControllerStyleActionSheet。

7.2 活動(dòng)視圖(Activity Views)

一個(gè)活動(dòng)就是一個(gè)在當(dāng)前環(huán)境下有意義的任務(wù),比如復(fù)制、收藏或是查找。一旦活動(dòng)被觸發(fā),它可以立即執(zhí)行一個(gè)任務(wù),也可以在開(kāi)始前請(qǐng)求更多的信息?;顒?dòng)由活動(dòng)視圖管理,根據(jù)設(shè)備和橫豎屏的不同,以表單或浮出層的形式出現(xiàn)。使用活動(dòng)向用戶提供你的app能夠執(zhí)行的自定義服務(wù)或任務(wù)。

系統(tǒng)提供了一系列內(nèi)置的活動(dòng),比如打印、Twitter、信息和Airplay。這些任務(wù)總是在活動(dòng)視圖的最前列出現(xiàn),并且不能被重新排列。你無(wú)須為執(zhí)行這些內(nèi)置任務(wù)創(chuàng)建自定義活動(dòng)?;顒?dòng)視圖還能展示來(lái)自其它app的分享和操作插件。請(qǐng)參閱Sharing and Actions。

設(shè)計(jì)能夠代表你的自定義活動(dòng)的簡(jiǎn)單的模板圖像。模板圖像(template image)利用遮罩(mask)創(chuàng)建圖標(biāo)。模板圖像應(yīng)使用透明度合適和經(jīng)過(guò)抗鋸齒處理的黑色和白色,并且不包含陰影。模板圖像應(yīng)該被放置在一塊大約為70px*70px尺寸的區(qū)域中心。

設(shè)計(jì)能夠簡(jiǎn)扼描述你的任務(wù)的活動(dòng)標(biāo)題。在活動(dòng)視圖中,標(biāo)題顯示在圖標(biāo)下方。短標(biāo)題是最佳的。當(dāng)標(biāo)題過(guò)長(zhǎng),iOS首先會(huì)縮小字體,若文本實(shí)在過(guò)長(zhǎng), iOS會(huì)截?cái)嗨?。一般?lái)說(shuō),避免在標(biāo)題中包含你的公司或產(chǎn)品名字。

確?;顒?dòng)在當(dāng)前環(huán)境中是合適的。雖然系統(tǒng)提供的任務(wù)在活動(dòng)視圖中不能被重新排列,但當(dāng)它們對(duì)你的app不適用時(shí),你可以去除它們。比如,你可以通過(guò)去除打印活動(dòng)而阻止用戶在你的app中打印圖片。你也可以在特定的時(shí)候讓特定的自定義任務(wù)出現(xiàn)。

通過(guò)操作按鈕呼出操作視圖。用戶已經(jīng)習(xí)慣了通過(guò)點(diǎn)擊操作按鈕來(lái)進(jìn)入系統(tǒng)提供的活動(dòng)。避免用其它方式替代,從而讓用戶感到困惑。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UIActivityViewContollerUIActivity

7.3 警告框(Alerts)

警告框傳達(dá)了與你的app或設(shè)備狀態(tài)相關(guān)的重要信息,并且通常在請(qǐng)求用戶反饋。警告框由標(biāo)題、描述信息(可選)、一個(gè)或多個(gè)按鈕和用于獲取用戶輸入的文本框(可選)。除了這些可配的元素之外,警告框的視覺(jué)外觀
是固定的的且不能被自定義。

盡可能少地使用警告框。警告框會(huì)中斷用戶體驗(yàn),只有在重要情境下才能使用,比如確認(rèn)購(gòu)買、破壞性操作(如刪除),或是通知用戶當(dāng)前出現(xiàn)了問(wèn)題。正是因?yàn)榫婵虻暮币?jiàn)性,才讓用戶更加重視警告框。確保每個(gè)警告框都提供了關(guān)鍵的信息和有用的選項(xiàng)。

在橫屏和豎屏下雙重測(cè)試警告框的外觀。警告框可能在橫屏和豎屏模式下看起來(lái)有所區(qū)別。優(yōu)化警告框文本,確保用戶在任一模式下都無(wú)需滑動(dòng)操作即可完整閱讀。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UIAlertController

(1)警告框標(biāo)題和信息

使用簡(jiǎn)短的、描述性的、多詞語(yǔ)的警告框標(biāo)題。用戶需要在屏幕上閱讀的文本越短越好。嘗試更多地推敲標(biāo)題,以避免額外添加信息文本。由于單詞語(yǔ)的標(biāo)題很少能提供有用信息,考慮使用問(wèn)句或是短句。盡可能控制標(biāo)題字?jǐn)?shù)在一行內(nèi)。使用句子式大寫(xiě),并用合適的標(biāo)點(diǎn)符號(hào)為句子結(jié)尾。不要給句子片段(譯者注:不完整的殘缺句)加上結(jié)束標(biāo)點(diǎn)。

如果你必須提供一段信息,請(qǐng)使用簡(jiǎn)短、完整的句子。盡量將說(shuō)明信息控制在一到兩行之內(nèi),這樣用戶就無(wú)需通過(guò)滾動(dòng)查看。使用句子式大寫(xiě)和合適的標(biāo)點(diǎn)符號(hào)。

避免使用指責(zé)的、苛刻的或是無(wú)禮的語(yǔ)氣。用戶知道警告框是為了通知他們發(fā)生的問(wèn)題和危險(xiǎn)情況。只要你使用友好的語(yǔ)氣,那么表現(xiàn)地消極和直接一些好過(guò)一味的積極和隱晦。避免使用“你”、“你的”、“我”和“我的”之類的代詞,因?yàn)樗鼈兂1焕斫鉃闊o(wú)禮和傲慢。

避免對(duì)警告框按鈕做出解釋。如果警告框文本和按鈕標(biāo)題足夠明了,那么就無(wú)需對(duì)按鈕的用途做出多余的解釋。在極少數(shù)需要為按鈕提供指導(dǎo)的情況下,請(qǐng)使用詞語(yǔ)“輕擊(tap)”,并且在提到按鈕名稱時(shí)使用大寫(xiě),并且不要添加雙引號(hào)。

(2)警告框按鈕

通常情況下,使用雙按鈕警告框。雙按鈕警告框提供了在兩個(gè)選項(xiàng)中快速抉擇的途徑。單按鈕警告框只負(fù)責(zé)通知,卻未給予用戶對(duì)當(dāng)前情勢(shì)的控制權(quán)。擁有三個(gè)或以上按鈕的警告框增加了復(fù)雜性,并可能需要滾動(dòng)操作,而這恰是一種不良的用戶體驗(yàn)。如果你發(fā)現(xiàn)自己需要兩個(gè)以上的按鈕,可以考慮用操作列表代替。請(qǐng)參閱Action Sheets。

使用簡(jiǎn)明合理的按鈕標(biāo)題。最好的按鈕標(biāo)題應(yīng)該包含一個(gè)或兩個(gè)能夠描述選擇按鈕后的結(jié)果的詞語(yǔ)。對(duì)于所有的按鈕標(biāo)題,使用標(biāo)題式大寫(xiě),并且不含標(biāo)點(diǎn)符號(hào)。盡可能地,使用與警告框標(biāo)題或信息直接對(duì)應(yīng)的動(dòng)詞或動(dòng)詞性詞組,比如,“查看全部”、“回復(fù)”、或“忽略”。使用“好的(OK) ”表示簡(jiǎn)單的接受。避免使用“是”或“否”。

在用戶預(yù)期的位置放置按鈕。一般來(lái)說(shuō),用戶最可能輕擊的按鈕應(yīng)該在右邊。取消按鈕應(yīng)該在左邊。

為有取消功能的按鈕合理命名。一個(gè)能夠取消警告框操作的按鈕就該被命名為“取消”。

識(shí)別會(huì)產(chǎn)生破壞性結(jié)果的按鈕。如果一個(gè)警告框按鈕會(huì)產(chǎn)生破壞性的操作,比如刪除內(nèi)容,那么請(qǐng)將按鈕樣式設(shè)定為“Destructive”,這樣它就能通過(guò)系統(tǒng)獲取合適的格式。了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UIAlertAction中的UIAlertActionStyleDestructive常量。另外,為用戶提供一個(gè)“取消”按鈕,讓它們能夠安全地從破壞性操作中退出。通過(guò)標(biāo)記“取消”按鈕為默認(rèn)按鈕,來(lái)加粗按鈕文本。

允許使用“Home”鍵來(lái)取消警告框。當(dāng)警告框出現(xiàn)時(shí),按住Home鍵會(huì)退出app。但同時(shí),它應(yīng)該也產(chǎn)生和點(diǎn)擊取消按鈕一樣的效果,即在不執(zhí)行任何操作的情況下關(guān)閉警告框。如果你的警告框沒(méi)有取消按鈕,那么考慮將點(diǎn)擊Home鍵也會(huì)關(guān)閉警告框?qū)懭肽愕拇a中。

7.4 集合(Collections)

一個(gè)集合管理著一組有序的內(nèi)容,比如一組圖片,并且在可自定義的且高度可視化的布局中展示它。因?yàn)榧蠠o(wú)需執(zhí)行嚴(yán)格的線性格式,所以它尤其適合用來(lái)展示大小不同的項(xiàng)目。簡(jiǎn)言之,集合是用來(lái)展現(xiàn)圖片類內(nèi)容的理想視圖。背景及其它裝飾性視圖可以選擇性地用于視覺(jué)上區(qū)分不同組別的項(xiàng)目。

集合同時(shí)支持交互性和動(dòng)畫(huà)。默認(rèn)狀態(tài)下,你可以通過(guò)輕擊(tap)來(lái)選擇,長(zhǎng)按(touch and hold)來(lái)編輯,以及輕掃(swipe)來(lái)滾動(dòng)。如果你的app需要,你可以加入更多的手勢(shì)用于執(zhí)行自定義操作。在集合中,當(dāng)項(xiàng)目被插入、刪除或是重新排序時(shí)會(huì)伴隨默認(rèn)動(dòng)畫(huà),你也可以使用自定義動(dòng)畫(huà)。

若標(biāo)準(zhǔn)的行或網(wǎng)格布局已能滿足需求,請(qǐng)避免創(chuàng)造顛覆性的新設(shè)計(jì)。集合是為了優(yōu)化用戶體驗(yàn),而不是變成關(guān)注的中心。讓用戶能更容易選擇一項(xiàng)。如果用戶很難在集合中選中某項(xiàng),它們會(huì)變得沮喪并且很快地在獲得想要的內(nèi)容前失去興致。在內(nèi)容周圍留有充足的邊距,保持布局的整潔并避免內(nèi)容重疊顯示。

對(duì)于文本,考慮用表格來(lái)替代集合。一般來(lái)說(shuō),在滾動(dòng)列表中的文字信息更易于閱讀和理解。

請(qǐng)謹(jǐn)慎地對(duì)待布局的動(dòng)態(tài)變化。集合的布局可以隨時(shí)被改變。如果你在用戶查看視圖或是與之交互時(shí)讓它發(fā)生了動(dòng)態(tài)的變化,請(qǐng)確保變化是有意義的并且易于跟蹤。沒(méi)有目的的布局變化會(huì)讓你的app看起來(lái)不可預(yù)知并且難用。如果因?yàn)椴季肿兓鴮?dǎo)致用戶丟失了當(dāng)前關(guān)注的焦點(diǎn)或是瀏覽的內(nèi)容,那么他們很可能會(huì)覺(jué)得自己無(wú)法再控制這個(gè)app了。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UICollectionView。

7.5 圖片視圖(Image Views)

圖片視圖在透明或不透明的背景上展示一張圖片或是一組圖片的動(dòng)態(tài)序列。在圖片視圖中,圖片可以被拉伸、縮放、根據(jù)屏幕調(diào)整大小,或是固定在特定位置。默認(rèn)情況下圖片視圖是不可交互的。

可能時(shí),確保一個(gè)圖片視圖內(nèi)的所有圖片都尺寸一致。如果你的圖片大小不一,圖片視圖就要逐一調(diào)整尺寸。使用尺寸一致的圖片比使用不同尺寸的圖片更有效率。若是使用已縮放好的且無(wú)需額外調(diào)整的圖片就更加高效。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UIImageView。

Note

模板圖片(template image)會(huì)丟棄圖片本身的色彩,而采用圖片視圖使用的色調(diào)。請(qǐng)參閱UIImage中的UIImageRenderingModeAlwaysTemplate

7.6 地圖(Maps)

地圖視圖允許你在app內(nèi)展示地理數(shù)據(jù),并且支持原生地圖應(yīng)用的大部分功能。地圖視圖可以展示標(biāo)準(zhǔn)地圖、衛(wèi)星地圖或是兩者兼有。它可以含有定位標(biāo)簽(大頭針)和疊加圖層,并且支持縮放和平移。

一般情況下,保證你的地圖是可交互的。用戶習(xí)慣了使用手勢(shì)與原生的地圖應(yīng)用交互,并且希望在你的地圖里也能以相同的方式交互。

使用合理的標(biāo)簽(大頭針)顏色。大頭針代表著地圖上你感興趣的點(diǎn)。用戶已經(jīng)熟悉了原生地圖應(yīng)用中的標(biāo)準(zhǔn)大頭針顏色。避免在你的app中對(duì)這些顏色有不同的定義。使用紅色表示重點(diǎn),綠色表示起點(diǎn),紫色表示用戶指定的位置。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱MapKit。

7.7 頁(yè)面(Pages)

頁(yè)面視圖控制器提供了在多頁(yè)面內(nèi)容間(比如在文檔中、書(shū)本、筆記本或是日歷中)實(shí)現(xiàn)線性導(dǎo)航的方式。頁(yè)面視圖控制器通過(guò)滾動(dòng)或翻頁(yè)兩種樣式來(lái)處理導(dǎo)航時(shí)頁(yè)面的過(guò)渡。滾動(dòng)過(guò)渡沒(méi)有特定的外觀;頁(yè)面流暢地從當(dāng)前頁(yè)滾動(dòng)至下一頁(yè)。翻頁(yè)過(guò)渡會(huì)在你橫掃屏幕時(shí)讓頁(yè)面翻卷過(guò)去,就好像在現(xiàn)實(shí)中里翻書(shū)頁(yè)一樣。

滾動(dòng)過(guò)渡(查看動(dòng)畫(huà)請(qǐng)移步https://developer.apple.com/ios/human-interface-guidelines/ui-views/pages/)

如果合適的話,設(shè)計(jì)一種非線性的導(dǎo)航方式。使用頁(yè)面視圖控制器時(shí),頁(yè)面只能按次序變換,你無(wú)法在不相鄰的頁(yè)面間跳轉(zhuǎn)。如果用戶于需要在你的app中不按次序?yàn)g覽頁(yè)面,請(qǐng)?jiān)O(shè)計(jì)一種滿足該功能的自定義控件。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UIPageViewController。

7.8 浮出層(Popovers)

浮出層是一個(gè)當(dāng)你點(diǎn)擊某控件或某塊區(qū)域時(shí),會(huì)在屏幕內(nèi)其它內(nèi)容上方出現(xiàn)的暫時(shí)視圖。通常來(lái)說(shuō),浮出層包含一個(gè)指向其出現(xiàn)位置的箭頭。浮出層含有非模態(tài)和模態(tài)兩種形式。非模態(tài)浮出層可以通過(guò)點(diǎn)擊屏幕上其它區(qū)域或是浮出層上的某個(gè)按鈕來(lái)關(guān)閉它。模態(tài)浮出層只能通過(guò)點(diǎn)擊浮出層上的取消或是其它按鈕來(lái)關(guān)閉。

浮出層最適合用于大屏幕,并且可以包含任何一種元素,比如導(dǎo)航欄、工具欄、標(biāo)簽欄、表格、集合、圖片、地圖以及自定義視圖。當(dāng)浮出層出現(xiàn)時(shí),通常就無(wú)法再與其它視圖進(jìn)行交互,除非浮出層被關(guān)閉。利用浮出層來(lái)展示與當(dāng)前屏幕內(nèi)容相關(guān)的選項(xiàng)或信息。比如,非常多的iPad應(yīng)用會(huì)在你點(diǎn)擊分享按鈕后彈出浮出層來(lái)展示分享選項(xiàng)。

避免在iPhone設(shè)備上展示浮出層。一般來(lái)說(shuō),浮出層更適用于iPad應(yīng)用。對(duì)于iPhone應(yīng)用,盡量使用全屏的模態(tài)視圖來(lái)展示信息,而非使用浮出層。了解更多指導(dǎo),請(qǐng)參閱 Modality

只在確認(rèn)和引導(dǎo)時(shí)使用關(guān)閉按鈕。諸如“取消”或“完成“之類的關(guān)閉按鈕,若是能清晰表明操作結(jié)果(比如,在保存或未保存狀態(tài)下退出),那么就它就有存在的價(jià)值。一般來(lái)說(shuō),當(dāng)浮出層不再有必要存在時(shí),它應(yīng)該自動(dòng)關(guān)閉。在大多數(shù)情況下,當(dāng)用戶點(diǎn)擊浮出層外部區(qū)域或是選擇了浮出層內(nèi)的某項(xiàng)后,浮出層應(yīng)該關(guān)閉。如果用戶能在浮出層進(jìn)行多選,那么只有在用戶明確選擇關(guān)閉它或是點(diǎn)擊了浮層的外部區(qū)域時(shí),它才會(huì)消失。

自動(dòng)關(guān)閉一個(gè)非模態(tài)的浮出層時(shí)替用戶保存當(dāng)前輸入。用戶很容易就會(huì)因誤點(diǎn)屏幕其它區(qū)域而將浮出層關(guān)閉。只有在用戶明確點(diǎn)擊“”取消“”按鈕的情況下才可以丟棄他們的輸入。

在屏幕上的合適位置放置浮出層。浮出層的箭頭應(yīng)該盡可能地指向?qū)⒏雍舫龅脑?。由于浮出層無(wú)法在屏幕中被拖動(dòng),所以它不應(yīng)該遮擋住用戶在使用浮出層時(shí)可能會(huì)需要查看的重要內(nèi)容。浮出層也不應(yīng)該遮擋住觸發(fā)它的元素。

同一時(shí)間只展示一個(gè)浮出層。同時(shí)展示多個(gè)浮層會(huì)導(dǎo)致界面雜亂無(wú)章,并讓用戶感到困惑。永遠(yuǎn)都不要通過(guò)一個(gè)浮出層觸發(fā)另一個(gè)浮出層的方式,在屏幕上展示并列或堆疊的多個(gè)浮層。如果你需要展示一個(gè)新的浮層,請(qǐng)關(guān)閉當(dāng)前的浮層。

不要在浮出層上展示其它的視圖。除了警告框,任何其它視圖都不應(yīng)該出現(xiàn)在浮出層之上。

可能時(shí),讓用戶通過(guò)一次點(diǎn)擊就可關(guān)閉當(dāng)前浮層并且打開(kāi)新浮層。當(dāng)欄上有多個(gè)不同的按鈕且每個(gè)會(huì)呼出一個(gè)浮出層時(shí),尤其應(yīng)當(dāng)考慮避免不必要的點(diǎn)擊次數(shù)。

避免設(shè)計(jì)過(guò)大的浮出層。浮出層不應(yīng)該占據(jù)整個(gè)屏幕。設(shè)計(jì)一個(gè)尺寸足以展示其內(nèi)容的浮出層,并且指向呼出它的地方。請(qǐng)注意系統(tǒng)可能會(huì)調(diào)整浮出層的尺寸以保證其在屏幕上完美展現(xiàn)。

確保自定義浮出層看起來(lái)還是一個(gè)是浮出層。雖然你可以自定義浮出層的大部分視覺(jué)外觀,但是避免創(chuàng)造一個(gè)用戶可能辨認(rèn)不出是浮出層的設(shè)計(jì)。含有標(biāo)準(zhǔn)控件和視圖的浮出層最容易被用戶接受。

當(dāng)浮出層的尺寸變動(dòng)時(shí)提供流暢的過(guò)渡動(dòng)畫(huà)。有些浮出層會(huì)為相同的信息同時(shí)提供精簡(jiǎn)和拓展視圖。如果你要調(diào)整浮出層的尺寸,請(qǐng)使用轉(zhuǎn)場(chǎng)動(dòng)畫(huà)以避免給用戶造成新浮層取代舊浮層的印象。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UIPopoverPresentationController。

7.9 滾動(dòng)視圖(Scroll Views)

滾動(dòng)視圖讓用戶能夠?yàn)g覽超出屏幕可見(jiàn)范圍的內(nèi)容,比如文檔中的文本或是一個(gè)集合的圖片。當(dāng)用戶輕掃、滑動(dòng)、拖曳、輕擊以及捏合時(shí),滾動(dòng)視圖會(huì)遵循用戶的手勢(shì),以一種自然的方式顯示或是縮放內(nèi)容。滾動(dòng)視圖本身沒(méi)有外觀,但是在用戶與之交互時(shí)會(huì)顯示一個(gè)暫時(shí)性的滾動(dòng)指示器( scrolling indicator)。滾動(dòng)視圖也可以被設(shè)置為分頁(yè)模式,此時(shí)滾動(dòng)手勢(shì)會(huì)展開(kāi)一個(gè)全新的頁(yè)面,而不是在當(dāng)前頁(yè)面來(lái)回移動(dòng)。

合理地支持縮放操作。如果你的app需要,可以讓用戶通過(guò)捏合或者雙擊來(lái)縮放。當(dāng)你允許縮放時(shí),請(qǐng)?jiān)O(shè)置有意義的最大和最小比值。比如,對(duì)一個(gè)文本不斷放大直到其填充屏幕的行為可能在大部分的app中毫無(wú)意義。

當(dāng)滾動(dòng)視圖處于分頁(yè)模式時(shí),考慮顯示頁(yè)面控件元素。頁(yè)面控件表明了分頁(yè)、分屏或者分塊內(nèi)容的可得總量,并且指明了當(dāng)前顯示的是哪一個(gè)。如果你在滾動(dòng)視圖中展示了頁(yè)面控件,請(qǐng)禁用處在同軸的滾動(dòng)指示器以避免混淆。了解更多指導(dǎo),請(qǐng)參閱Page Control。

不要在一個(gè)滾動(dòng)視圖內(nèi)放置另一個(gè)滾動(dòng)視圖。這么做會(huì)產(chǎn)生一個(gè)難以控制且不可預(yù)知的界面。

一般而言,同一時(shí)間只展示一個(gè)滾動(dòng)視圖。在滾動(dòng)視圖內(nèi),用戶常會(huì)作出幅度很大的輕掃手勢(shì),這樣一來(lái),就很難避免和同屏內(nèi)相鄰的滾動(dòng)視圖發(fā)生交互。如果你需要在一屏內(nèi)放置兩個(gè)滾動(dòng)視圖,考慮讓他們?cè)诓煌姆较驖L動(dòng),這樣一個(gè)手勢(shì)就不太可能同時(shí)作用于兩個(gè)視圖。比如,當(dāng)iPhone處于豎屏模式時(shí),“股市”app會(huì)在水平滑動(dòng)的公司詳情視圖上方展示垂直滾動(dòng)的股票報(bào)價(jià)列表。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UIScrollView。

7.10 分屏視圖(Split Views)

分屏視圖用于展示兩塊相鄰窗格的內(nèi)容,主窗格上的內(nèi)容保持不變,而次窗格會(huì)展示相關(guān)的信息。每一個(gè)窗格都能包含任意種類的元素,包括導(dǎo)航欄、工具欄、標(biāo)簽欄、表格、集合、圖片、地圖以及自定義視圖。分屏視圖一般用于展示可分類內(nèi)容:主窗格展示一列類別目錄,次窗格展示經(jīng)選中類目篩選后的結(jié)果。如果你的app需要,主窗格可以覆蓋在次窗格上,并且在不需要的時(shí)候被隱藏至屏幕外。這點(diǎn)在設(shè)備處于豎屏模式時(shí)尤為重要,因?yàn)樗鼮闉g覽次窗格上的內(nèi)容提供了更多的空間。

選擇一個(gè)適用于你的內(nèi)容的分屏視圖布局。默認(rèn)的分屏視圖分別將1/3和2/3的空間分配給主窗格和次窗格。但是屏幕也可以被平分為兩半。根據(jù)你的內(nèi)容來(lái)選擇合適的分屏,并保證兩個(gè)窗格不會(huì)看起來(lái)不平衡。避免設(shè)計(jì)一個(gè)比主窗格還窄的次窗格。

保持主窗格里被激活的選項(xiàng)高亮。盡管次窗格的內(nèi)容會(huì)變化,它應(yīng)該永遠(yuǎn)與主窗格里清晰易辨的選中項(xiàng)相對(duì)應(yīng)。這樣有助于用戶理解主次窗格之間的關(guān)系。

一般地,限制導(dǎo)航于分屏視圖的一側(cè)。在分屏視圖的兩個(gè)窗格都放置導(dǎo)航會(huì)讓用戶很難保持方向感,并且會(huì)難以明白兩個(gè)窗格間的關(guān)系。

為重新呼出被隱藏的主窗格提供多種方式。在一些主窗格可能會(huì)離開(kāi)屏幕的布局中,請(qǐng)確保能提供提供一個(gè)按鈕——一般在導(dǎo)航欄上——用于重新呼出主窗格。除非你的app已將滑動(dòng)手勢(shì)來(lái)于執(zhí)行其它功能,否則請(qǐng)?jiān)试S用戶也能通過(guò)從屏幕邊緣輕掃(swipe)來(lái)呼出主窗格。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UISplitViewController。

7.11 表格(Tables)

表格通過(guò)一個(gè)可以滾動(dòng)的、單欄的行列表來(lái)呈現(xiàn)數(shù)據(jù),這個(gè)行列表可以被分成不同的段落或群組。使用表格以列表的形式來(lái)整齊高效地展示大量或少數(shù)的信息。一般來(lái)說(shuō),表格最最適合于基于文本的內(nèi)容,并且通常在分屏視圖的一側(cè)作為導(dǎo)航出現(xiàn),并伴有顯示在另一側(cè)的相關(guān)內(nèi)容。請(qǐng)參閱“分屏視圖Split Views”。

iOS采用兩種類型的表格:平鋪型(plain)和分組型(grouped)。

平鋪型。行列表可以被分為幾個(gè)帶有標(biāo)簽的段落,在表格右邊界的還可以有一條縱向索引。頁(yè)眉可以出現(xiàn)在每個(gè)段落的第一項(xiàng)之前,頁(yè)腳可以出現(xiàn)在最后一項(xiàng)之后。

分組型。行列表以分組的形式展示,常伴有頁(yè)眉和頁(yè)腳。這種類型的表格最起碼含有一個(gè)分組,且每個(gè)分組最少含有一行。分組型表格不含有索引。

注意表格的寬度。過(guò)窄的表格會(huì)造成文本截?cái)嗪椭丿B,導(dǎo)致用戶難以在較遠(yuǎn)距離快速閱讀和瀏覽。過(guò)寬的表格也不易于閱讀和瀏覽,還可能會(huì)讓內(nèi)容缺少空白(譯者注:填滿文本的寬表格)。

一開(kāi)始就快速顯示表格內(nèi)容。不要等到全部表格內(nèi)容加載完后,才向用戶展示。應(yīng)該先立即填充表格上的文本數(shù)據(jù),然后當(dāng)較為復(fù)雜的數(shù)據(jù)加載完成時(shí)再展示它們——比如圖片。這個(gè)技巧讓用戶立即獲得有用的信息,并提升了你的app在用戶認(rèn)知中的響應(yīng)性。在某些情況下,在新數(shù)據(jù)到達(dá)前展示過(guò)時(shí)的老數(shù)據(jù)也能行得通。

加載內(nèi)容時(shí)告知進(jìn)度。如果一個(gè)表格的數(shù)據(jù)需要一定時(shí)間來(lái)加載,可以展示一個(gè)進(jìn)度條或者緩沖圖標(biāo)(spinning activity indicator)來(lái)告知用戶你的app仍在加載中。

保持更新內(nèi)容。考慮定時(shí)更新你的表格內(nèi)容以反映最新數(shù)據(jù)。但是不要更改滾動(dòng)頁(yè)面的定位。反之,在表格的開(kāi)頭或是末尾添加新的內(nèi)容,并在它們準(zhǔn)備就緒時(shí)允許用戶滑動(dòng)至新內(nèi)容。一些apps會(huì)在新數(shù)據(jù)被添加時(shí)顯示一個(gè)標(biāo)志(indicator),并提供一個(gè)能夠直接跳轉(zhuǎn)至新內(nèi)容的控件。在頁(yè)面中包含一個(gè)刷新控件也是個(gè)好主意,這樣用戶就可以在任意時(shí)刻手動(dòng)執(zhí)行刷新操作。請(qǐng)參閱“內(nèi)容刷新控件Refresh Content Controls”。

避免在含有右對(duì)齊元素的表格行中包含索引。索引是通過(guò)大幅度的滑動(dòng)手勢(shì)來(lái)控制的。如果其它可交互元素在它附近,比如展開(kāi)按鈕(disclosure indicators),那么就很難辨別用戶手勢(shì)的意圖,并且很可能會(huì)激活錯(cuò)誤的元素。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UITableView。

(1)表格行

你使用標(biāo)準(zhǔn)的表格單元格樣式來(lái)決定如何在表格行中展示內(nèi)容。

默認(rèn)型(Default)。行左端可以有圖片,并跟隨左對(duì)齊的標(biāo)題。該樣式適用于展示無(wú)需補(bǔ)充信息的項(xiàng)目。了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UITableViewCell中的UITableViewCellStyleDefault constant。

副標(biāo)題型(Subtitle)。一行左對(duì)齊的標(biāo)題和下一行左對(duì)齊的副標(biāo)題。這種樣式適用于行和行視覺(jué)上相似的表格。額外的副標(biāo)題幫助區(qū)分行與行。了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UITableViewCell中的UITableViewCellStyleSubtitle constant。

Value 1。左對(duì)齊的標(biāo)題和同處一行的右對(duì)齊且顏色較淺的副標(biāo)題。了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UITableViewCell中UITableViewCellStyleValue1 constant。

副標(biāo)題型(Subtitle)。一行左對(duì)齊的標(biāo)題和下一行左對(duì)齊的副標(biāo)題。這種樣式適用于行和行視覺(jué)上相似的表格。額外的副標(biāo)題幫助區(qū)分行與行。了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UITableViewCell中的UITableViewCellStyleSubtitle constant。

所有標(biāo)準(zhǔn)表格單元格樣式還可以含有圖形元素,比如一個(gè)選中標(biāo)記或關(guān)閉圖標(biāo)。然而毫無(wú)疑問(wèn),添加圖形元素會(huì)減少標(biāo)題和副標(biāo)題的可用空間。

保持文本的簡(jiǎn)練以避免被截?cái)唷?/b>被刪減的單次和詞組不容易被瀏覽和理解。無(wú)論使用哪種表格單元格樣式,文本截?cái)喽际亲詣?dòng)的,但是這個(gè)問(wèn)題的嚴(yán)重性由不同的單元格樣式和不同的截?cái)辔恢脹Q定。

考慮為刪除按鈕使用自定義標(biāo)題。對(duì)于支持刪除功能的行,如果有助于用戶理解,可以將按鈕上系統(tǒng)提供的“刪除”文本換成自定義標(biāo)題。

選中時(shí)提供反饋。用戶期望被選中行能在被點(diǎn)擊時(shí)短暫高亮。然后,用戶期待出現(xiàn)一個(gè)新的視圖或者某些元素發(fā)生改變,比如出現(xiàn)一個(gè)選中標(biāo)記,表示已經(jīng)做出了選擇。

為非標(biāo)準(zhǔn)的表格行設(shè)計(jì)一個(gè)自定義的表格單元格樣式。標(biāo)準(zhǔn)的樣式能很好地運(yùn)用于多種常見(jiàn)的情境中,但是某些內(nèi)容或是你的整體app設(shè)計(jì)可能會(huì)需要一個(gè)高度自定義的表格外觀。學(xué)習(xí)如何創(chuàng)建你自己的單元格,請(qǐng)參閱Table View Programming Guide for iOS中的Customizing Cells

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UITableViewCell。

7.12 文本視圖(Text Views)

文本視圖用于展示多行的、帶有樣式的文本內(nèi)容。文本視圖可以是任意高度,當(dāng)內(nèi)容超出視圖邊界時(shí)可以允許滾動(dòng)。默認(rèn)地,文本視圖的內(nèi)容采用左對(duì)齊的方式,并且使用黑色的系統(tǒng)字體。如果文本視圖支持編輯,當(dāng)你在視圖內(nèi)點(diǎn)擊后會(huì)出現(xiàn)一個(gè)鍵盤(pán)。

保持文本清晰可讀。盡管你可以富有創(chuàng)意地使用多種字體、顏色甚至對(duì)齊方式,保持內(nèi)容的可讀性是最基本的要求。采用動(dòng)態(tài)文本(Dynamic Type)是個(gè)好主意,這樣即使用戶在他們的設(shè)備上更改了文本大小,你的文本依舊會(huì)看起來(lái)很棒。你應(yīng)該在不同的輔助功能選項(xiàng)下測(cè)試你的內(nèi)容,比如粗體文本。

展示合適的鍵盤(pán)類型。iOS提供了多種不同的鍵盤(pán)類型,以便于不同類型的輸入。為了簡(jiǎn)化數(shù)據(jù)錄入,在編輯文本視圖時(shí)顯示的鍵盤(pán)應(yīng)該適用于當(dāng)前域的文本類型。了解完整的可用鍵盤(pán)類型,請(qǐng)參閱UITextInputTraits中的UIKeyboardTypeconstant。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UITextView。

7.13 網(wǎng)絡(luò)視圖(Web Views)

網(wǎng)絡(luò)視圖能直接在你的app中加載和呈現(xiàn)豐富的網(wǎng)絡(luò)內(nèi)容,比如嵌入的HTML和網(wǎng)站。比如,“郵件”就使用了網(wǎng)絡(luò)視圖來(lái)在信息中展示HTML內(nèi)容。

合適時(shí)啟用前進(jìn)和后退導(dǎo)航。網(wǎng)絡(luò)視圖支持前進(jìn)和后退導(dǎo)航,但是這種行為被默認(rèn)禁止。如果用戶將在你的網(wǎng)絡(luò)視圖中瀏覽多個(gè)頁(yè)面,請(qǐng)啟用前進(jìn)和后退導(dǎo)航,并為這些功能提供對(duì)應(yīng)的控件。

避免使用網(wǎng)絡(luò)視圖來(lái)構(gòu)建一個(gè)網(wǎng)絡(luò)瀏覽器。讓用戶在不離開(kāi)你的app的情況下通過(guò)網(wǎng)絡(luò)視圖暫時(shí)性地進(jìn)入一個(gè)網(wǎng)站是可以的,當(dāng)時(shí)Safari才是用戶瀏覽網(wǎng)頁(yè)的主要方式。試圖在你的app中復(fù)制Safari的功能是沒(méi)有意義且不被鼓勵(lì)的行為。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱WKWebView

8. UI 控件(UI Controls)

8.1 按鈕(Buttons)

按鈕觸發(fā)app內(nèi)特定的操作,擁有自定義背景,并且可以含有一個(gè)名稱或圖標(biāo)。系統(tǒng)為大多數(shù)情況提供了若干已確定的按鈕樣式。你也可以設(shè)計(jì)完全自定義的按鈕。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIButton

(1)系統(tǒng)按鈕

系統(tǒng)按鈕一般出現(xiàn)在導(dǎo)航欄和工具欄,但也可能被用于它處。

使用動(dòng)詞當(dāng)作按鈕名稱。一個(gè)特定行為的名稱表明了按鈕是可交互的并且說(shuō)明了點(diǎn)擊它會(huì)產(chǎn)生的結(jié)果。

名稱使用單詞首字母大小的格式。除了冠詞、并列連詞和不大于4個(gè)單詞的介詞外,其余單詞都要首字母大小寫(xiě)。

保證名稱的簡(jiǎn)短。過(guò)長(zhǎng)的文本會(huì)讓你的界面變得擁擠,在小屏上還很可能會(huì)被截?cái)唷?/p>

只在必要時(shí)考慮添加邊框或背景色。系統(tǒng)圖標(biāo)默認(rèn)沒(méi)有邊框和背景色。然而,在某些內(nèi)容區(qū)域,邊框和背景色會(huì)因其指示了可交互性而顯得必要。在”電話”中,帶有邊框的數(shù)字鍵強(qiáng)化了打電話的傳統(tǒng)模型,撥打按鈕的背景色讓其變成一個(gè)醒目的目標(biāo),易于用戶點(diǎn)擊。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIButton中的UIButtonTypeSystembutton type。

(2)詳情展開(kāi)按鈕(Detail Disclosure Buttons)

詳情展開(kāi)按鈕用于打開(kāi)一個(gè)視圖——通常是一個(gè)模態(tài)視圖,該視圖含有更多信息或是與屏幕內(nèi)某個(gè)特定項(xiàng)目相關(guān)的功能。盡管你可以在任何一種視圖中使用詳情展開(kāi)按鈕,但它通常出現(xiàn)在表格中用于獲取該行的相關(guān)信息。

合理地在表格中使用詳情展開(kāi)按鈕。當(dāng)表格的某行上出現(xiàn)了詳情展開(kāi)按鈕時(shí),點(diǎn)擊按鈕會(huì)顯示更多的信息。點(diǎn)擊該行的其它地方會(huì)選中該行或是激活應(yīng)用特定的行為。如果你想讓用戶通過(guò)點(diǎn)擊整行來(lái)查看更多詳情,就不要使用詳情展開(kāi)按鈕。取而代之的,可以使用V形的詳情展開(kāi)附屬控件(detail disclosure accessory control)。請(qǐng)參閱UITableViewCell中的UITableViewCellAccessoryType

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIButton中的UIButtonTypeDetailDisclosurebutton type。

(3)信息按鈕

信息按鈕呼出app相關(guān)的配置詳情,有時(shí)會(huì)以翻轉(zhuǎn)視圖的形式出現(xiàn)在當(dāng)前視圖的背面。信息按鈕含有兩種樣式:淺色和深色。選擇最適合你的app設(shè)計(jì)的樣式,不要讓它埋沒(méi)在當(dāng)前屏幕中。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIButton中的UIButtonTypeInfoLightandUIButtonTypeInfoDarkbutton types。

(4)添加聯(lián)系人按鈕

用戶通過(guò)點(diǎn)擊添加聯(lián)系人按鈕在現(xiàn)有的聯(lián)系人列表中瀏覽從而選擇一個(gè)插入到文本框或是其它視圖。比如,在“郵件”中,你可以點(diǎn)擊“收件人(To)”欄右側(cè)的“添加聯(lián)系人”按鈕來(lái)從你的聯(lián)系人列表中選擇收件人。

除了”添加聯(lián)系人”按鈕外,允許鍵盤(pán)輸入。添加聯(lián)系人按鈕只是提供了輸入聯(lián)系人信息的另一種選擇,而不是替代品。把其作為一種添加現(xiàn)有聯(lián)系人的快捷方式是好的,但同時(shí)也要允許用戶通過(guò)鍵盤(pán)輸入聯(lián)系人信息。

了解開(kāi)發(fā)細(xì)節(jié),請(qǐng)參閱UIButton中的UIButtonTypeContactAddbutton type。

8.2 編輯菜單(Edit Menus)

用戶可以通過(guò)在文本欄、文本視圖、網(wǎng)頁(yè)視圖或圖片視圖中長(zhǎng)按或雙擊來(lái)選擇內(nèi)容或是呼出編輯菜單,比如“拷貝”和“粘貼”。

為當(dāng)前上下文展示合適的命令。默認(rèn)地,這些選項(xiàng)包括“剪切”、“拷貝”、“粘貼”、“選擇”、“全選”以及“刪除”命令,但并不是所有按鈕都要出現(xiàn)。如果沒(méi)有內(nèi)容被選中,那么該菜單就不應(yīng)該包含需要先選中再執(zhí)行的命令,比如“拷貝”或“剪切”。同樣的,如果當(dāng)前已經(jīng)選中了某項(xiàng),那么該菜單就不應(yīng)該含有“選擇”選項(xiàng)。

讓用戶通過(guò)標(biāo)準(zhǔn)手勢(shì)觸發(fā)編輯菜單。用戶期望通過(guò)長(zhǎng)按或雙擊文本或圖片來(lái)呼出菜單。你的app應(yīng)該同時(shí)感應(yīng)這兩種手勢(shì)。若用戶執(zhí)行了雙擊操作,你還可以指定會(huì)被默認(rèn)選中的內(nèi)容。在文本視圖中,應(yīng)該默認(rèn)選中詞語(yǔ)。

必要時(shí)調(diào)節(jié)編輯菜單的位置。默認(rèn)地,菜單會(huì)根據(jù)空間的空余情況出現(xiàn)在插入點(diǎn)或備選項(xiàng)的上方或下方,并且包含指向?qū)?yīng)內(nèi)容的箭頭。盡管你不能夠改變菜單的形狀,但它的位置是可設(shè)置的——你可以避免它遮擋住重要的界面內(nèi)容或元素。

不要使用其它控件來(lái)執(zhí)行和編輯菜單同樣的功能。為執(zhí)行同一個(gè)操作提供不同的路徑會(huì)帶來(lái)不一致的用戶體驗(yàn),讓用戶感到困惑。如果你的app讓用戶通過(guò)編輯菜單來(lái)復(fù)制內(nèi)容,那么就不要再單獨(dú)設(shè)置一個(gè)復(fù)制按鈕。

允許用戶選擇和復(fù)制那些可能對(duì)他們有用但卻無(wú)法編輯的文本。用戶常常會(huì)想要在他們的郵件、筆記或是網(wǎng)頁(yè)搜索框中黏貼一些靜態(tài)內(nèi)容(不可編輯的),比如一個(gè)圖片標(biāo)簽或是一條臉書(shū)狀態(tài)。

不要為呼出編輯菜單提供一個(gè)按鈕。如果你這么做,那些通過(guò)手勢(shì)來(lái)觸發(fā)菜單的人最終都會(huì)變成通過(guò)點(diǎn)擊按鈕來(lái)打開(kāi)菜單。

讓編輯操作可以被撤銷。在執(zhí)行操作前,菜單不會(huì)向用戶發(fā)起二次確認(rèn)。但是用戶可能會(huì)在點(diǎn)擊某個(gè)命令之后改變了主意,所以請(qǐng)向用戶提供撤銷和重做的支持。

在編輯菜單添加有用的自定義命令。你可以通過(guò)提供應(yīng)用特有的命令,來(lái)增強(qiáng)編輯菜單的價(jià)值。和標(biāo)準(zhǔn)命令一樣,任何自定義命令都需要通過(guò)選中文本或其它內(nèi)容才能被觸發(fā)。

把自定義命令放在系統(tǒng)自帶的命令之后。系統(tǒng)自帶的命令是用戶最常使用的功能,不要在它們之間穿插自定義命令。

盡可能減少自定義命令的數(shù)量。不要讓用戶面對(duì)太多的選擇。

保持自定義命令名稱簡(jiǎn)短。命令名稱應(yīng)該是精準(zhǔn)描述所執(zhí)行操作的動(dòng)詞或動(dòng)詞短語(yǔ)。使用標(biāo)題式大寫(xiě)格式:除冠詞、并列連詞和不大于4個(gè)字母的介詞外,一律大寫(xiě)首字母。

了解開(kāi)發(fā)詳情,請(qǐng)參閱Text Programming Guide for iOSUIMenuController中的Copy, Cut, and Paste Operations

8.3 標(biāo)簽(Labels)

標(biāo)簽描述了當(dāng)前屏的界面元素或是提供了簡(jiǎn)短的信息。雖然用戶無(wú)法編輯標(biāo)簽,但是他們有時(shí)會(huì)拷貝標(biāo)簽內(nèi)容。標(biāo)簽可以展示任意數(shù)量的靜態(tài)文本,但是最好保持簡(jiǎn)短。

保證標(biāo)簽易讀。標(biāo)簽可以包含純文本或樣式文本。如果你調(diào)整了標(biāo)簽樣式或是使用了自定義字體,請(qǐng)同時(shí)確保它們的易讀性。最好采用動(dòng)態(tài)字體(Dynamic Type),這樣即使用戶更改了設(shè)備的字體大小,你的標(biāo)簽依舊看起來(lái)很棒。請(qǐng)參閱【動(dòng)態(tài)字體】。同時(shí)你應(yīng)該在輔助功能打開(kāi)的情況下測(cè)試你的標(biāo)簽,比如加粗文本。請(qǐng)參閱【輔助功能】。

想學(xué)習(xí)關(guān)于文本(text)的知識(shí),請(qǐng)參閱String Programming Guide。項(xiàng)學(xué)習(xí)如何創(chuàng)造樣式化文本,請(qǐng)參閱Attributed String Programming Guide。了解標(biāo)簽的開(kāi)發(fā)詳情,請(qǐng)參閱UILabel。

8.4 頁(yè)面控件(Page Controls)

頁(yè)面控件說(shuō)明了當(dāng)前頁(yè)在一組平級(jí)頁(yè)中所處的位置。它由一系列小圓點(diǎn)組成,表示了可用頁(yè)的數(shù)量以及它們被打開(kāi)的次序。實(shí)心的圓點(diǎn)表示當(dāng)前頁(yè)。這些圓點(diǎn)是按一定的距離分布的,如果屏幕上有太多圓點(diǎn)它們就會(huì)被部分截?cái)?。用戶可以通過(guò)點(diǎn)擊頁(yè)面控件的左邊緣和右邊緣在相鄰的頁(yè)面中切換,但是他們不能通過(guò)點(diǎn)擊某個(gè)特定的圓點(diǎn)到達(dá)其對(duì)應(yīng)的頁(yè)面。頁(yè)面控件提供的導(dǎo)航是有序的,用戶一般通過(guò)輕掃到達(dá)相鄰頁(yè)。

不要把頁(yè)面控件和有層次結(jié)構(gòu)的頁(yè)面一起使用。頁(yè)面控件不是為了說(shuō)明頁(yè)面之間的關(guān)聯(lián),也不是為了表明某一頁(yè)對(duì)應(yīng)某個(gè)圓點(diǎn)。這種類型的控件是為了那些同類頁(yè)而設(shè)計(jì)的。

不要展示過(guò)多的頁(yè)面。一旦圓點(diǎn)超過(guò)10個(gè),用戶就難以只看一眼就數(shù)清數(shù)量;而一旦打開(kāi)頁(yè)超過(guò)20個(gè),按次序?yàn)g覽就變得十分耗時(shí)。如果你的app需要展示超過(guò)20個(gè)的同類頁(yè),請(qǐng)考慮采用其它的方法,比如常用于無(wú)序?qū)Ш降膶m格。

把頁(yè)面控件居中放在屏幕底部。頁(yè)面控件應(yīng)該被居中放置在頁(yè)面底邊緣和屏幕底邊緣之間。這樣能確保它被用戶發(fā)現(xiàn),且不會(huì)遮擋內(nèi)容。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIPageControl。

8.5 選擇器(Pickers)

選擇器包含了一個(gè)或多個(gè)可滾動(dòng)的值列表,每個(gè)列表都有一個(gè)垂直居中且以深色文本顯示的選中值。選擇器一般在用戶編輯字段或點(diǎn)擊菜單時(shí)出現(xiàn)在屏幕的底端或是浮出層里。選擇器也可以在行間出現(xiàn),比如在“日歷”中編輯事件的日期時(shí)。選擇器的高度大約在五行列表值左右。選擇器的寬度可以是屏寬,也可以與其所屬視圖等寬。

使用符合用戶預(yù)期且按邏輯排列的值。當(dāng)滾動(dòng)列表靜止時(shí),會(huì)有很多值被隱藏。最好的做法是讓用戶猜測(cè)到被隱藏的值是什么,比如是一系列按首字母排序的國(guó)家名,這樣用戶就能在列表中快速翻動(dòng)查找。

避免跳轉(zhuǎn)至其它屏來(lái)展示選擇器。選擇器在當(dāng)前上下文中、在所填字段附近出現(xiàn)最有效。

對(duì)于有大量值的列表,應(yīng)該用表格而不是選擇器。在高度有限的選擇器里瀏覽很長(zhǎng)的列表是煩人的。但是表格的高度是可調(diào)的,還能含有索引,讓滾動(dòng)更快速。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIPickerView。

(1)日期選擇器

日期選擇器呈現(xiàn)了一個(gè)選擇指定日期、時(shí)間或兩者同時(shí)的高效界面。它還同時(shí)提供了計(jì)時(shí)器界面。

日期選擇器有四種模式,分別展示四套不同的可選值。

  • 日期:展示月份、當(dāng)月的日期以及年份
  • 時(shí)間:展示小時(shí)、分以及上午或下午選項(xiàng)(可選)
  • 日期和時(shí)間:展示日期、小時(shí)、分、上午或下午選項(xiàng)(可選)
  • 計(jì)時(shí)器:展示小時(shí)和分,最多23小時(shí)和59分。

日期選擇上顯示的具體值視用戶的所在地區(qū)而定。

在展示分鐘時(shí),考慮盡可能地減少選項(xiàng)。分鐘列表默認(rèn)含有60個(gè)值(0至59)。你可以選擇性地增大分鐘間隔,只要它能將60整除。比如,你可能會(huì)想要15分鐘的間隔(0,15,30和45)。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIDatePicker。

8.6 進(jìn)度指示器(Progress Indicators)

當(dāng)你的app需要加載內(nèi)容或是執(zhí)行冗長(zhǎng)的數(shù)據(jù)處理操作時(shí),不要讓用戶坐在那里,傻傻盯著不動(dòng)的屏幕等待。使用活動(dòng)指示器和進(jìn)度條來(lái)告訴用戶你的app沒(méi)有停止運(yùn)行,并讓他們知道還需要等待多久。

請(qǐng)同時(shí)參閱Loading。

(1)活動(dòng)指示器

活動(dòng)指示器會(huì)在執(zhí)行一些無(wú)法量化的任務(wù)時(shí)旋轉(zhuǎn),比如加載或是同步復(fù)雜數(shù)據(jù)。當(dāng)任務(wù)完成時(shí),它會(huì)消失?;顒?dòng)指示器是不可交互的。

更多地使用進(jìn)度條而非活動(dòng)指示器。如果當(dāng)前活動(dòng)是可量化的,請(qǐng)使用進(jìn)度條來(lái)代替活動(dòng)指示器,這樣用戶就能夠更好地預(yù)估當(dāng)前發(fā)生了什么以及它要進(jìn)行多久。

確?;顒?dòng)指示器一直在旋轉(zhuǎn)。用戶會(huì)把靜止的活動(dòng)指示器和停滯的進(jìn)程聯(lián)系在一起。確保它一直在旋轉(zhuǎn),這樣用戶就知道系統(tǒng)在工作。

如果對(duì)用戶有幫助,可以在等待任務(wù)完成的過(guò)程中,為他們提供有用的信息。可以通過(guò)活動(dòng)指示器下方的標(biāo)簽顯示更多的信息。避免使用語(yǔ)義模糊的術(shù)語(yǔ),比如“加載中”或“認(rèn)證中”,因?yàn)樗麄儾⒉荒芙o用戶帶去任何價(jià)值。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIActivityIndicatorView。

(2)進(jìn)度條

進(jìn)度條包含了一條從左往右填充的軌跡,用于展示一個(gè)任務(wù)的進(jìn)度。進(jìn)度條是不可交互的,但是他們經(jīng)常伴隨著一個(gè)取消當(dāng)前操作的按鈕。

總是準(zhǔn)確地匯報(bào)進(jìn)度。不要為了讓你的app看起來(lái)很忙碌而展示不準(zhǔn)確的進(jìn)度信息。只為可量化的任務(wù)使用進(jìn)度條。否則,請(qǐng)使用活動(dòng)指示器。

用進(jìn)度條來(lái)展示有明確持續(xù)時(shí)間的任務(wù)。進(jìn)度條能夠很好的展示當(dāng)前任務(wù)的狀態(tài),尤其是能夠讓用戶知道當(dāng)前任務(wù)還需要多久才能完成。

在導(dǎo)航欄和工具欄中隱藏進(jìn)度條未被填充的那部分軌跡。進(jìn)度條默認(rèn)含有填充和未填充的部分。當(dāng)在導(dǎo)航欄和工具欄中使用,比如用來(lái)表明頁(yè)面的加載進(jìn)度時(shí),應(yīng)該隱藏進(jìn)度條未被填充的部分。

考慮自定義進(jìn)度條的外觀來(lái)與你的app匹配。進(jìn)度條的外觀能夠根據(jù)你的app設(shè)計(jì)而調(diào)整。比如,你能夠?yàn)樘畛浜臀刺畛涞牟糠衷O(shè)定自定義的顏色或圖片。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIProgressView。

(3)網(wǎng)絡(luò)活動(dòng)指示器

當(dāng)前發(fā)生連網(wǎng)活動(dòng)時(shí),網(wǎng)絡(luò)活動(dòng)指示器會(huì)在屏幕頂部狀態(tài)欄上旋轉(zhuǎn)。結(jié)束連網(wǎng)時(shí),它就會(huì)消失。這個(gè)指示器和活動(dòng)指示器長(zhǎng)得一樣,并且同樣不可交互。

只在進(jìn)行那些持續(xù)時(shí)間超過(guò)幾秒的網(wǎng)絡(luò)活動(dòng)時(shí)才展示這個(gè)指示器。無(wú)需為快速的網(wǎng)絡(luò)活動(dòng)展示指示器,因?yàn)樗鼈兒芸赡茉谟脩糇⒁獾剿拇嬖诨蚴敲靼姿硎裁粗耙呀?jīng)消失了。

請(qǐng)同時(shí)參閱Status Bars。了解開(kāi)發(fā)詳情,請(qǐng)參閱UIApplication中的networkActivityIndicatorVisible。

8.7 內(nèi)容刷新控件(Refresh Content Controls)

刷新控件一般用于表格視圖中,通過(guò)人為觸發(fā)來(lái)立即刷新內(nèi)容,而無(wú)需等至下次自動(dòng)加載發(fā)生。刷新控件是一種特殊類型的活動(dòng)指示器,默認(rèn)情況下被隱藏,當(dāng)用戶下拉需要重新加載的視圖之后可以被看見(jiàn)。比如,在“郵件”中,你可以通過(guò)下拉收件箱列表來(lái)檢查是否有最新的訊息。

執(zhí)行內(nèi)容的自動(dòng)更新。盡管用戶會(huì)感謝能夠通過(guò)下拉快速刷新內(nèi)容,但他們同樣希望能夠定時(shí)自動(dòng)地替他們刷新。不要讓用戶承擔(dān)激活每一次刷新的工作。通過(guò)定時(shí)刷新保證數(shù)據(jù)的及時(shí)性。

如果有意義,可以為刷新控件添加一個(gè)短標(biāo)題。刷新控件可以選擇性地包含一個(gè)標(biāo)題。但是在大多數(shù)情況下,這樣做是無(wú)意義的,因?yàn)樗⑿驴丶膭?dòng)效已經(jīng)足以表明加載的狀態(tài)。如果你一定要包含一個(gè)標(biāo)題,不要用它來(lái)解釋如何執(zhí)行刷新操作。取而代之地,提供一些與被加載內(nèi)容有關(guān)且有價(jià)值的信息。比如,在“播客”中,利用一行文字來(lái)告訴用戶上次是什么時(shí)間更新了播客。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIRefreshControl。

8.8 分段控件(Segmented Controls)

分段控件是含有兩個(gè)或更多分段的一個(gè)線狀組,每個(gè)分段等于一個(gè)與其它互斥的按鈕??丶锏乃蟹侄味际堑葘挼?。和按鈕一樣,分段可以含有文本或圖片。分段控件一般用于展示不同的視圖。比如,在“地圖”中,分段控件讓你能在地圖、公交和衛(wèi)星視圖間來(lái)回切換。

限制分段的數(shù)量以確保可用性。更寬的分段更易于點(diǎn)擊。在iPhone設(shè)備上,一個(gè)分段控件最多只能包含五個(gè)分段。

盡量維持各分段內(nèi)容尺寸的一致性。因?yàn)樗械姆侄味嫉葘挘匀绻硞€(gè)分段被填得很滿很滿但是其它的又很空,就會(huì)顯得很難看。

避免在一個(gè)分段控件中同時(shí)使用文本和圖片。盡管分段控件可以容納文本或圖片,但在一個(gè)控件中同時(shí)使用兩者會(huì)讓界面變得混亂而無(wú)條理。

在自定義的分段控件中合理放置內(nèi)容。如果你更改了分段控件的背景圖,請(qǐng)確保其上的內(nèi)容依舊與之相配并清晰可讀,而不會(huì)顯得不和諧。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UISegmentedControl

8.9 滑塊(Sliders)

滑塊是一條帶有thumb控件的水平軌跡,你可以通過(guò)手指拖動(dòng)它在最小值和最大值之間滑動(dòng),比如屏幕亮度或是媒體播放進(jìn)度。當(dāng)滑塊值改變時(shí),最小值和thumb之間的軌跡會(huì)被顏色填充。可以選擇性地在滑塊的左右兩側(cè)分別展示圖標(biāo),來(lái)說(shuō)明最大值和最小值所代表的含義。

自定義滑塊的外觀,如果這么做有意義。滑塊的外觀,包含軌跡顏色、thumb的圖片以及左側(cè)和右側(cè)的圖標(biāo),這些都可以為了符合你的app設(shè)計(jì)風(fēng)格以及達(dá)到溝通的目的而被調(diào)整。比如,用戶調(diào)整圖片大小的滑塊,可以在左側(cè)顯示一個(gè)小的圖片圖標(biāo),并在右側(cè)顯示一個(gè)大的圖片圖標(biāo)。

不要使用滑塊來(lái)調(diào)節(jié)音量。如果你需要在你的app中提供音量控件,請(qǐng)使用音量視圖。它是可自定義的,含有一個(gè)音量滑塊和一個(gè)更改當(dāng)前音源輸出設(shè)備的控件。了解關(guān)于如何使用音量視圖,請(qǐng)參閱MPVolumeView。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UISlider。

8.10 步進(jìn)器(Steppers)

步進(jìn)器是一個(gè)用于增加或減少遞增數(shù)值的兩段控件。默認(rèn)狀態(tài)下,步進(jìn)器的一個(gè)分段顯示一個(gè)加號(hào)而另外一個(gè)顯示減號(hào)。如果有需要,這些符號(hào)也可以替換成自定義圖片。

確保步進(jìn)器所調(diào)整的數(shù)值顯眼易見(jiàn)。由于步進(jìn)器本身不顯示任何值,因此要確保用戶知道他們用步進(jìn)器改變的是什么值。

若可能涉及到較大數(shù)值的調(diào)整,那就不要使用步進(jìn)器。步進(jìn)器適用于只需少量點(diǎn)擊的小數(shù)值調(diào)整。比如,在打印頁(yè)面,使用步進(jìn)器調(diào)整打印份數(shù)是合理的,因?yàn)橛脩魳O少會(huì)大幅度調(diào)整這個(gè)值。反之,用步進(jìn)器來(lái)選擇頁(yè)碼范圍就是不合理的,因?yàn)榧词故菍?duì)于頁(yè)碼不多的文檔,用戶也必須通過(guò)多次點(diǎn)擊才能完成選擇。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UIStepper

8.11 開(kāi)關(guān)按鈕(Switches)

開(kāi)關(guān)按鈕提供了在兩種互斥狀態(tài)——開(kāi)和關(guān)之間的視覺(jué)切換。

自定義樣式的開(kāi)關(guān)

默認(rèn)樣式的開(kāi)關(guān)

考慮調(diào)整開(kāi)關(guān)的外觀以符合你的app風(fēng)格。如果對(duì)你的app有幫助,可以更改開(kāi)關(guān)的在兩種狀態(tài)下的顏色,或是使用自定義圖像來(lái)替代開(kāi)關(guān)。

只能在表格欄中使用開(kāi)關(guān)。開(kāi)關(guān)是用于表格中的,比如在一列設(shè)置項(xiàng)中,每個(gè)設(shè)置項(xiàng)都能被打開(kāi)和關(guān)閉。如果你需要在導(dǎo)航欄和工具欄中執(zhí)行類似的功能,請(qǐng)使用按鈕替代,并且提供兩個(gè)不同的圖標(biāo)來(lái)表達(dá)不同的狀態(tài)。

避免用標(biāo)簽來(lái)描述開(kāi)關(guān)的值。開(kāi)關(guān)只有兩種狀態(tài):不是打開(kāi)就是關(guān)閉。用額外的標(biāo)簽來(lái)描述這兩種狀態(tài)是多余的,會(huì)使界面變得凌亂。

考慮使用開(kāi)關(guān)來(lái)控制與之相關(guān)的界面元素。開(kāi)關(guān)常常會(huì)影響到屏幕上的其它內(nèi)容。比如,在“設(shè)置”中打開(kāi)飛行模式,會(huì)關(guān)閉某些設(shè)置項(xiàng),比如“蜂窩移動(dòng)網(wǎng)絡(luò)”和“個(gè)人熱點(diǎn)”。在設(shè)置中關(guān)閉Wi-Fi會(huì)導(dǎo)致其它選項(xiàng)的消失。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UISwitch。

8.12 文本框(Text Fields)

文本框是單行、高度固定且?guī)в袌A角的輸入框,點(diǎn)擊它會(huì)自動(dòng)呼出鍵盤(pán)。使用文本框向用戶請(qǐng)求少量信息的錄入,比如郵箱地址。

在文本框中顯示提示文字向用戶解釋意圖。若當(dāng)前文本框中沒(méi)有其它文本,文本框內(nèi)可以包含占位文本,比如“郵箱”或“密碼”。若占位文本已經(jīng)表意明確,就不要再額外用標(biāo)簽對(duì)文本框進(jìn)行描述了。

合適時(shí),使用加密文本框。在你的app請(qǐng)求密碼之類的敏感信息時(shí),總是使用加密文本框。

TIP ?對(duì)于多行或是多樣式的文本輸入,請(qǐng)使用文本視圖。請(qǐng)參閱Text Views。

郵件鍵盤(pán)

電話鍵盤(pán)

顯示合適的鍵盤(pán)類型。iOS提供了幾種不同的鍵盤(pán)類型,每種都為了特定的一種輸入類型而設(shè)計(jì)。為了方便數(shù)據(jù)輸入,編輯文本框時(shí)顯示的鍵盤(pán)應(yīng)該適用于當(dāng)前所要輸入的文本類型。如果你的app需要用戶輸入郵箱,那么應(yīng)該顯示對(duì)應(yīng)的郵箱鍵盤(pán)。了解可用鍵盤(pán)類型的完整列表,請(qǐng)參閱UITextInputTraits中的UIKeyboardTypeconstant。

在文本框中添加圖片以增進(jìn)理解、添加按鈕以增強(qiáng)功能性。你可以在文本框的左側(cè)或是右側(cè)顯示自定義圖片,或是添加一個(gè)系統(tǒng)按鈕,比如一個(gè)書(shū)簽按鈕。一般來(lái)說(shuō),文本框左側(cè)的區(qū)域用于說(shuō)明文本框的含義,右側(cè)的區(qū)域用于展示已有的附加功能,比如書(shū)簽。

合適時(shí),在文本框的右端展示一個(gè)清除按鈕。若出現(xiàn)了清除按鈕,點(diǎn)擊它會(huì)清楚文本框內(nèi)的所有輸入內(nèi)容,免去了用戶不斷點(diǎn)擊鍵盤(pán)上刪除按鈕的麻煩。

了解開(kāi)發(fā)詳情,請(qǐng)參閱UITextField。

相關(guān)閱讀

譯文 | iOS 10 人機(jī)界面設(shè)計(jì)指南 (一)

譯文 | iOS 10 人機(jī)界面指南(二)

譯文|iOS 10 人機(jī)界面指南(三)

譯文|iOS 10 人機(jī)界面指南(四)

 

原文地址:https://developer.apple.com/ios/human-interface-guidelines/

譯者:喵大神經(jīng),交互設(shè)計(jì)師。

本文由 @喵大神經(jīng) 翻譯發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 哇塞,好文 :mrgreen: 受益匪淺

    來(lái)自廣東 回復(fù)
  2. :mrgreen:

    來(lái)自廣東 回復(fù)
  3. 哇。。。好文,值得學(xué)習(xí),謝謝分享

    來(lái)自廣東 回復(fù)
  4. 這個(gè)必須點(diǎn)贊,支持!作者辛苦了。收藏了細(xì)讀

    來(lái)自江蘇 回復(fù)