八、浮出層(Popovers)
浮出層是一種臨時視圖,會在用戶點(diǎn)擊控件或特定區(qū)域時觸發(fā),高于其他頁面層級。通常,浮出層包括指向它出現(xiàn)位置的箭頭。它可以是非模態(tài)(羅列信息)或是模態(tài)(進(jìn)行信息操作)。非模態(tài)浮層通過點(diǎn)擊屏幕的另一部分或彈窗按鈕來關(guān)閉;模態(tài)浮層通過點(diǎn)擊取消或其他按鈕即可解除浮層。
浮出層在大屏設(shè)備上最合適,可以包含各種元素,包括導(dǎo)航欄、工具欄、標(biāo)簽欄、制表符欄、集合視圖、表格、圖像、地圖和自定義視圖。當(dāng)一個浮層可見時,其他視圖的交互通常被禁用,直到浮層關(guān)閉。使用浮層顯示與屏幕內(nèi)容相關(guān)的選項或信息。例如,當(dāng)用戶點(diǎn)擊按鈕操作時,許多 iPad 應(yīng)用會顯示一個共享選項的浮層。

避免在 iPhone上顯示浮出層。一般來說,浮出層應(yīng)該保留在 iPad 應(yīng)用中使用。在 iPhone 應(yīng)用中,在全屏模式視圖中呈現(xiàn)信息,而不是在浮層中,利用所有可用的屏幕空間。
使用關(guān)閉按鈕進(jìn)行確認(rèn)和引導(dǎo)。應(yīng)包含關(guān)閉按鈕,例如 取消、完成??梢允橇硪环N形式,例如退出或不保存更改。一般來說,浮層應(yīng)在不需要時自動關(guān)閉。在大多數(shù)情況下,當(dāng)用戶點(diǎn)擊其邊界之外或選擇一個在浮層中的項目時,浮層應(yīng)該關(guān)閉。如果可以進(jìn)行多項選擇,則浮層應(yīng)保持打開狀態(tài),直到用戶明確將其關(guān)閉。
當(dāng)自動關(guān)閉非模態(tài)浮層時,經(jīng)常進(jìn)行保存。輕按屏幕的另一部分就會無意中關(guān)閉非模態(tài)浮層,只有當(dāng)用戶點(diǎn)擊取消按鈕時才放棄本次操作。
指向觸發(fā)位置。浮層箭頭應(yīng)該盡可能直接指向觸發(fā)它的元素,由于浮層不能移動,浮層不應(yīng)該遮擋可能需要看到的基本內(nèi)容,當(dāng)然也不應(yīng)該覆蓋觸發(fā)它的元素。
一次顯示一個浮層。顯示多個浮層使界面變得混亂并引起用戶迷惑。不要顯示一個級聯(lián)或?qū)哟谓Y(jié)構(gòu),例如其中一個從另一個彈出。如果需要一個新的浮層,請先關(guān)閉打開的那個。
請勿在浮層上再展示另一個視圖。除了彈窗,浮層中不應(yīng)有任何視圖。
盡可能關(guān)閉現(xiàn)有的浮層后才能打開新的。當(dāng)多個不同的按鈕會觸發(fā)不同浮層時,避免額外的注釋很重要。
避免浮層太大。浮層不應(yīng)占用整個屏幕,只顯示足夠大的內(nèi)容并指向觸發(fā)元素。要注意,系統(tǒng)可能會調(diào)整浮層的大小以確保它適合屏幕。
確保自定義浮層看起來像個浮層。雖然可以定制浮層樣式,但要避免用戶可能無法識別為浮層的設(shè)計。當(dāng)內(nèi)容包含標(biāo)準(zhǔn)控件和視圖時,浮層往往最有效。
更改浮層大小時平滑過渡。一些浮層提供了相同信息下的視圖縮放,如果你需要調(diào)整浮層大小,請使用動效平滑過渡,以避免給用戶一種新浮層替換舊浮層的印象。
開發(fā)指導(dǎo)請參閱?UIPopoverPresentationController。
九、滾動視圖(Scroll Views)
滾動視圖允許用戶瀏覽大于可見區(qū)域的內(nèi)容,例如文檔中的文本或圖像集合。隨著用戶滑動、輕拂、拖動、點(diǎn)按和捏住,滾動視圖會沿著手勢以一種自然感的方式顯示或縮放內(nèi)容。滾動視圖本身沒有外觀,但是與其用戶交互時它會顯示臨時滾動指示器。它還可以配置為尋呼模式,其中滾動顯示全新的內(nèi)容頁面,而不是移動當(dāng)前頁面。

支持適當(dāng)縮放。如果在應(yīng)用中有意義,請支持捏住或雙擊放大和縮小的手勢。啟用縮放時,設(shè)置有意義的最大和最小比例值。比如,放大文本直到單個字符填滿屏幕,這就在大多數(shù)應(yīng)用中沒有意義。
滾動視圖處于尋呼模式時,考慮顯示頁面控制元素。頁面控件顯示有多少頁面、屏幕或其他內(nèi)容塊是否可用,并指示當(dāng)前可見的內(nèi)容。如果使用滾動視圖顯示頁面控件,請禁用同一軸上的滾動指示符,以避免混淆。更多指導(dǎo)請參閱Page Control。
請勿在滾動視圖中再放滾動視圖。這樣做會難以控制,界面交互不可預(yù)測。
一般來說,一次顯示一個滾動視圖。滾動時,用戶通常會進(jìn)行大量的滑動操作,并且可能難以避免與同一屏幕上的相鄰滾動視圖進(jìn)行交互。如果需要在一個屏幕上放置兩個滾動視圖,請考慮允許它們在不同的方向滾動,因此一個手勢不太可能影響這兩個視圖。例如,當(dāng)iPhone處于縱向時,股票類應(yīng)用會顯示股票報價,垂直滾動到特定信息后水平滾動。
開發(fā)指導(dǎo)請參閱?UIScrollView。
十、分屏視圖 (Split Views)
分屏視圖管理兩個并排的內(nèi)容窗格顯示,主窗格中的常駐內(nèi)容和輔窗格中的相關(guān)信息。每個窗格可以包含各種元素,包括導(dǎo)航欄、工具欄、標(biāo)簽欄、表格、集合、圖像、地圖和自定義視圖。分屏視圖通常與可過濾內(nèi)容一起使用。主窗格顯示過濾器類別列表,所選類別的過濾結(jié)果將顯示在輔窗格中。如果應(yīng)用需要,主窗格可以覆蓋輔窗格,并且在不使用時可以隱藏屏幕。這在設(shè)備處于縱向方向時特別有用,因為它允許在輔窗格中查看內(nèi)容的空間更大。

選擇適合內(nèi)容的分屏視圖布局。默認(rèn)情況下,分屏視圖將三分之一的屏幕用于主窗格,三分之二用于輔窗格。當(dāng)然也可以平均分配。根據(jù)內(nèi)容選擇適當(dāng)?shù)牟季植鸱?,確保窗格顯示平衡。避免創(chuàng)建比主窗格窄的輔窗格。
突出主窗格任務(wù)選擇。雖然輔窗格內(nèi)容可以更改,但它應(yīng)始終對應(yīng)主窗格中可清晰識別的選擇。有助于用戶了解窗格之間的關(guān)系。
通常導(dǎo)航只在一側(cè)。如果在分屏視圖的兩個窗格中放置導(dǎo)航,會使用戶難以保持導(dǎo)向及辨別兩個窗格之間的關(guān)系。
開發(fā)指導(dǎo)請參閱?UISplitViewController。
提供多種方式呼出隱藏的主窗格。在主窗格可能不在屏幕上的布局上,請務(wù)必提供一個按鈕(通常位于導(dǎo)航欄中)以顯示窗格。除非您的應(yīng)用程序使用滑動手勢來執(zhí)行其他功能,否則讓用戶從屏幕側(cè)面滑動即可訪問主窗格。
十一、表格視圖(Tables)
表格視圖以一個可滾動的單列多行的形式來展示一段或一組數(shù)據(jù)。用一個表格以列表的形式,簡潔高效地顯示大量或少量的信息。一般來說,表格最好用來展示文字內(nèi)容,而且經(jīng)常以導(dǎo)航的方式出現(xiàn)在分屏視圖的一側(cè),另一側(cè)顯示相關(guān)內(nèi)容。請參閱?Split Views。
iOS采用兩種表格,平鋪型和分組型。

平鋪型(圖左)。平鋪型表格可被分為若干帶標(biāo)簽的段落,表格右側(cè)邊緣可能會出現(xiàn)垂直的表格索引。每行開頭可以有頁眉,尾部可以有頁腳(也可以沒有)。
分組型(圖右)。表格行以分組形式展示,可以有頁眉和頁腳。分組表格視圖中至少含有一組列表,而每一組中至少包含一項內(nèi)容。與平鋪型不同,分組型表格沒有索引。
考慮列表寬度。細(xì)小的表格可能導(dǎo)致截斷和纏繞,使得它們很難在遠(yuǎn)處快速讀取和掃描。 寬表也可能難以閱讀和掃描,并可能從內(nèi)容中奪走空間。
快速顯示列表內(nèi)容。如果表格的內(nèi)容龐大而且復(fù)雜,不要在所有數(shù)據(jù)都加載完之后才一起顯示出來??梢允紫日故疚谋拘畔ⅲ瑘D片等較為復(fù)雜的內(nèi)容則在加載完后再顯示。這樣可以將有用的信息立即傳達(dá)給用戶,同時也提高了應(yīng)用的響應(yīng)能力。在等待信息加載的時候,可以考慮展示“過期”信息。
反饋加載進(jìn)程。如果信息加載速度很慢或者非常復(fù)雜,需要提供一個進(jìn)度條或者掃描控件告訴用戶加載正在進(jìn)行中。
保持內(nèi)容更新。通過定期更新的數(shù)據(jù)來反映更新的列表內(nèi)容。不要改變滾動位置,而是在列表的開頭或結(jié)尾添加更新的內(nèi)容,刷新時符合用戶的預(yù)期。當(dāng)新的數(shù)據(jù)被添加時,一些應(yīng)用程序顯示一個指示器,同時提供了一個對它的控件。一個好的方式是添加一個刷新按鈕,這樣用戶就可以隨時手動刷新。更多詳情請查閱?Refresh Content Controls.
避免將索引與包含右對齊元素的表格行組合。大面積的滑動手勢控制一個索引。如果其他交互元素設(shè)置在附近,如展開按鈕,一個手勢激活錯誤元素時,可能很難辨別用戶的意圖。
開發(fā)指導(dǎo)請參閱?UITableView。
表行
您使用標(biāo)準(zhǔn)表格單元格樣式來定義內(nèi)容在表格行中的顯示方式。

基本(默認(rèn),圖左)。 行左側(cè)為可選圖像,跟著是左對齊的標(biāo)題。 顯示不需要補(bǔ)充信息的項目是一個很好的選擇。 有關(guān)開發(fā)人員指南,請參閱?UITableViewCell 中的 UITableViewCellStyleDefault。
副標(biāo)題(圖右)。 一行為左對齊標(biāo)題,下一行為左對齊的副標(biāo)題。 這種風(fēng)格在行視覺上相似的表格中效果良好。 額外的副標(biāo)題有助于將行彼此區(qū)分開來。 有關(guān)開發(fā)人員指南,請參閱?UITableViewCell 中的?UITableViewCellStyleSubtitle。

右側(cè)細(xì)節(jié)(值1)。 左對齊的標(biāo)題,在同一行上有右對齊的字幕說明。 有關(guān)開發(fā)人員指南,請參閱 UITableViewCell中的?UITableViewCellStyleValue1。
左側(cè)細(xì)節(jié)(值2)。 右對齊的標(biāo)題,然后是同一行上的左對齊字幕。 有關(guān)開發(fā)人員指南,請參閱 UITableViewCell 中的?UITableViewCellStyleValue2?。
所有標(biāo)準(zhǔn)表格單元格樣式也允許圖形元素,例如復(fù)選標(biāo)記或公開指示符。 當(dāng)然,添加這些元素會減少可用于標(biāo)題和字幕的空間。
保持文本簡潔以避免裁剪。 截斷的單詞和短語很難掃描和理解。 文本截斷在所有表格單元格樣式中都是自動的,但它會顯示出或多或少的問題,具體取決于您使用的單元格樣式和截斷發(fā)生的位置。
考慮為刪除按鈕使用自定義標(biāo)題。 如果一行支持刪除并且有助于提供清晰度,請將系統(tǒng)提供的刪除標(biāo)題替換為自定義標(biāo)題。
在進(jìn)行選擇時提供反饋。 當(dāng)內(nèi)容被點(diǎn)擊時,用戶期望這一行可以突出顯示。 此外,用戶期望出現(xiàn)新的視圖或某些改變,例如出現(xiàn)復(fù)選標(biāo)記,表明已進(jìn)行選擇。
為非標(biāo)準(zhǔn)表格行設(shè)計自定義表格單元格樣式。 標(biāo)準(zhǔn)樣式適用于各種常見場景,但某些內(nèi)容或您的整體應(yīng)用設(shè)計可能需要大量定制的表格外觀。 要了解如何創(chuàng)建自己的單元格,請參閱?Table View Programming Guide for iOS?中的?Customizing Cells?。
開發(fā)指南請參閱?UITableViewCell。
十二、文本視圖(Text Views)
文本視圖可以展示多行、多風(fēng)格文本內(nèi)容。文本視圖可以是任何高度,當(dāng)內(nèi)容超出文本邊框時可以滾動。 默認(rèn)情況下,文本視圖會以左對齊的黑色系統(tǒng)字體顯示。如果文本是可以編輯的,當(dāng)用戶輕擊文本視圖內(nèi)部時,將喚起鍵盤。

確保文本易讀。雖然你可以使用不同的字體、字色和對齊方式,但保持文本的可讀性是必要的。最好是采用動態(tài)文本(Dynamic Type),這樣當(dāng)用戶改變設(shè)備上的文字大小時仍能很好的顯示。你也應(yīng)該測試你的功能選項內(nèi)容是否啟用,如粗體文本。
使用合適的鍵盤樣式。iOS提供了各種不同的鍵盤類型,以便用戶輸入不同類型的文本。為簡化數(shù)據(jù)輸入,鍵盤應(yīng)在文本視圖的編輯過程中顯示適當(dāng)?shù)淖侄蝺?nèi)容的類型。有關(guān)可用鍵盤類型的完整列表,請參閱?UITextView 中的?UIKeyboardType。
開發(fā)指南請參閱?UITextView。
十三、網(wǎng)絡(luò)視圖(Web Views)
網(wǎng)絡(luò)視圖加載并顯示豐富的網(wǎng)絡(luò)內(nèi)容,如直接在應(yīng)用中嵌入的 HTML 和網(wǎng)站。例如,郵件中使用的網(wǎng)絡(luò)視圖,信息中顯示的 HTML 內(nèi)容。

合適位置添加向前向后導(dǎo)航。網(wǎng)絡(luò)視圖支持向前和向后導(dǎo)航,但是這種行為在默認(rèn)情況下禁用。如果用戶使用網(wǎng)絡(luò)視圖訪問多個頁面,啟用向前和向后導(dǎo)航,并提供相應(yīng)控件來啟動這些功能。
請勿用網(wǎng)絡(luò)視圖創(chuàng)建瀏覽器。使用網(wǎng)絡(luò)視圖讓用戶不用跳出應(yīng)用就能簡單地訪問一個網(wǎng)站,但 Safari 是用戶在 iOS 中瀏覽網(wǎng)頁的主要方式。因此試圖在應(yīng)用中復(fù)制這個功能是不必要的。
開發(fā)指南請參閱?WKWebView。