天天看點

iOS 人機界面指南

From: http://www.1000phone.net/thread-7933-1-1.html

介紹

iPhone 和iPod touch融合了革命性的多點觸摸技術和多種強大功能,如電子郵件,即時通信,全功能網頁浏覽器和iPod等,另外iPhone還具有行動電話的功能。 iPhone OS是在iPhone和iPod touch上運作的系統軟體。随着iPhone SDK的釋出,這些強大的功能為開發人員提供了衆多的開發可能。開發者不但可以建立在iPhone OS裝置上使用的網頁内容,還可以使用iPhone SDK來建立在裝置中儲存和使用的本地程式。

本 文檔可以幫助您了解可以為iPhone OS建立何種類型的應用程式以及優秀iPhone程式基礎的人機界面設計準則。在本文檔中,您可以了解到如何在設計最佳使用者界面和使用者體驗時遵循這些原 則。不論您是經驗豐富的計算機程式開發員,或是一位熟練的移動裝置程式開發員,還是程式開發領域的新手,本文檔中都能夠幫助您開發出使用者需要的 iPhone程式。

  1. 注意:本文檔簡要地介紹了如何為iPhone OS裝置進行基于網頁的開發。更多詳細資訊,請參考iPhone Web應用程式人機界面指南 。

複制代碼

本文檔的組織結構 iPhone人機界面指南 分為兩部分,每一部分都包含幾個章節:

  • 第一部分“設計您的iPhone應用程式” 描述了iPhone OS環境和您可以為它開發的軟體類型。它也涵蓋了基本的人機界面設計原則,并描述了如何在您的iPhone應用程式中應用這些原則。
  • 第二部分“設計您的iPhone應用程式的使用者界面” 深入讨論了那些用于建立iPhone應用程式的使用者界面的元素。它描述了各種可用的視圖和控件并提供了如何有效使用它們的說明。

參考 如果您需要了解編寫iPhone應用程式的更多資訊,請參考:

  • iPhone應用程式程式設計指南

如果您需要了解為iPhone OS裝置設計Web應用程式的更多資訊,請參考:

  • iPhone Web應用程式人機界面指南

設計您的iPhone應用程式 本部分描述了設計和開發iPhone OS應用程式的思想方法。通過閱讀本部分的章節,您可以了解iPhone OS上不同的程式類型以及您将在工作中用到的設計準則。您也可以了解如何在您的應用程式中應用這些準則,使您的程式具有直覺而又引人注目的使用者界面。

iPhone OS平台:豐富的可能性 iPhone OS支援很多類型的軟體,從基于Safari的Web應用,到iPhone本地應用程式,都可以運作在iPhone OS裝置上。本章概要地介紹了為iPhone OS裝置建立不同類型軟體的解決方案。如果您剛接觸該平台,您應先閱讀第一節中iPhone OS裝置和其他計算機的差異總結,“牢記平台間的差異”。雖然此節的資訊并不全面,但已經包含了您在設計iPhone應用程式時需要意識到的問題。接下 來,本章闡述了設計不同應用程式風格和特點時的思維方式,以幫助您設計iPhone應用程式。本章也闡述了如何将現有的Mac OS X應用程式轉換為iPhone OS版本的應用程式。 牢記平台間的差異 iPhone OS裝置不同于桌上型電腦或筆記本電腦,iPhone應用程式也與桌面應用程式不同。雖然這些似乎隻是常識性陳述,但是您在為這些裝置開發軟體時意識到這些差 異還是非常重要的。為iPhone OS裝置開發軟體需要的思維方式可能是也可能不是您所習慣的。尤其是在您的經驗主要是開發桌面應用程式的情況下,您應該了解為移動平台設計軟體和為桌上型電腦 設計軟體的差異。本小節總結了這些具體的差異。這些差異對于您的設計選擇具有潛在的影響。有關如何處理這些差異以及iPhone應用程式開發過程中的其他 問題的具體資訊,請參考 iPhone應用程式程式設計指南。 緊湊的螢幕尺寸 iPhone OS裝置具有高分辨率的小型螢幕,适合使用者放入口袋且具有強大的顯示功能。然而這個對使用者來說巨大的優勢可能成為您的挑戰。因為這意味着您必須設計一個可 能與您的設計習慣差異較大的使用者界面。iPhone OS裝置螢幕的尺寸是480 x 320。考慮到這一點,使用者界面應該主要關注必不可少的部分。您沒有空間來放置那些非必要的設計元素。另外,擁擠的使用者界面将降低程式的吸引力并會提高使 用的難度。 記憶體是有限的 記憶體是iPhone OS的重要資源,是以在應用程式中管理記憶體至關重要。因為iPhone OS的虛拟記憶體模型不包括磁盤交換空間,是以您必須注意避免配置設定的記憶體超出裝置的可用記憶體。發生記憶體過低的情況時,iPhone OS将警告運作中的應用程式,若問題仍然存在,應用程式可能被終止。確定您的應用程式對于記憶體使用警告作出回應,并及時清理記憶體。在您設計應用程式時,可 以通過避免記憶體洩漏,減小資源檔案大小以及延遲加載資源的方式,盡力地降低程式的記憶體占用。關于如何在iPhone應用程式中合理處理記憶體的的更多資訊, 請參考 iPhone應用程式程式設計指南 。 每次隻能顯示一個視窗 iPhone OS環境和計算機環境的最大差別之一就是視窗模式。除了一些模式視圖外,在iPhone OS裝置上,使用者每次在螢幕上隻能看到應用程式的單個視窗。iPhone應用程式可以包含必要數量的不同視窗,但是使用者不能同時通路,隻能順序通路和查 看。如果應用程式的桌上型電腦版本需要使用者同時看到幾個視窗,那麼您需要考慮是否存在其他的方式讓使用者能夠在單個視窗或一系列順序檢視的視窗中完成同樣的任 務。如果不存在這種方式,您的iPhone應用程式不應考慮複制計算機版本程式的完整功能,而應改為實作計算機版本的單個子任務。 每次隻能運作一個程式 同 一時刻隻有一個iPhone應用程式可以運作,第三方應用程式不能在背景運作。這意味着當使用者切換到另一個應用程式,接電話或是檢視郵件時,他們目前使用 的應用程式将被關閉。重要的是,您應確定這一特點沒有對使用者産生負面影響。也就是說,在使用者離開您的iPhone應用程式并在稍後傳回時,使用者應該不會感 到比在計算機上的程式切換更加困難。保證使用者享有良好的程式切換體驗的最有效方法就是将您的應用程式的啟動時間降到最低。關于如何盡可能地減少啟動時間的 更多資訊,請參考 iPhone應用程式程式設計指南 。一般說來,使用者通過切換至裝置上其他應用程式或服務的方式退出您的應用程式時,他們不會 特地關閉您的應用程式。是以,不要期望使用者顯式地從菜單中選擇退出或是點選關閉按鈕。這意味着您的程式可能在沒有太多通知的情況下退出,由此您應盡可能迅 速地儲存使用者所做的修改。這樣就能在應用程式切換時形成快速而平穩的過渡,并且保證下一次您的應用程式啟動時能夠顯示使用者最近做的修改。簡單程式模型的另 一個重要方面是您處理程式特定配置的方式。在iPhone OS裝置上,使用者在設定程式中設定配置。您的iPhone應用程式可以提供這種配置,但是這意味着當使用者想在設定中通路這些配置時,他們必須退出您的程 序。如果您根據标準指南提供使用者僅需設定一次的設定,那麼您的程式的使用者體驗就會比較流暢。 簡短的使用者幫助 移動使用者在使用您的應用程式前沒有時間通讀大量的幫助内容。更重要的是,您也不想用寶貴的空間顯示或存儲幫助内容。iPhone OS裝置的設計特點是易用,是以滿足使用者的期望并使您的應用程式用法清晰明确是十分關鍵的。您可以采取如下措施:

  • 正确地使用标準控件。因為使用者已經熟悉在内置應用程式中看到的标準控件,是以他們了解如何在您的應用程式中使用這些控件。
  • 確定您的資訊中呈現的路徑具有邏輯性,讓使用者能夠輕松作出預測。另外,確定提供标記,比如後退按鈕,這樣使用者就可以知道他們的位置并且了解如何重複原來的步驟。

您的選擇是什麼? 在您決定如何将産品呈現給iPhone OS使用者前,您需要了解您可以選擇的範圍。根據産品的實作細節和目标使用者,某些類型的軟體可能更符合您的需求。本節将為iPhone OS裝置開發的軟體根據實作方法分為三大類。粗略地說,您可以建立:

  • iPhone應用程式 ,也就是您用iPhone SDK開發的,在iPhone OS裝置上本地運作的程式。
  • 僅在網頁上顯示的内容 ,包括Web應用等,也就是像内置iPhone應用程式一樣運作的網站。
  • 混合應用程式 ,在Web視圖區域中提供網頁内容的通路,但是也包含了一些iPhone OS使用者界面元素。

iPhone應用程式 iPhone應用程式 類似于Phone OS裝置上的内置應用程式,因為它們駐留在裝置本身并且利用了iPhone OS環境的特性。使用者在他們的裝置上安裝iPhone應用程式,并像使用内置應用程式一樣使用這些程式,例如股票,地圖,電腦和郵件。iPhone應用 程式啟動十分迅速且易于使用。不論應用程式的任務是發送郵件還是為使用者提供娛樂,它都應具備快速響應以及簡單的特點,另外還應有漂亮簡潔的使用者界面。 僅在網頁上顯示的内容 涉及到為iPhone OS使用者提供 僅在網頁上顯示的内容 時,您有一些不同的選擇:

  • Web應用 提 供了一個任務集中解決方案且遵從某種準則的網頁被稱為Web應用,因為它們的行為與iPhone OS内置的應用程式類似。Web應用與所有僅在網頁上顯示的内容相同,都在iPhone中的Safari上運作;使用者僅需跳轉到Web應用的URL,而不 用在其裝置上安裝Web應用。
  • 優化網頁 根據iPhone上的Safari特點進行顯示和操作優化的網頁(除了某些基于不支援的技術的元素,如插件,Flash和Java)。另外,優化網頁的内容尺寸應适合裝置的螢幕。常常将其設計為在iPhone OS裝置上顯示時進行檢測,以對所提供的内容做相應調整。
  • 相容網頁 顯示和操作與iPhone上的Safari相容的網頁(除了某些基于不支援的技術的元素,如插件,Flash和Java)。雖然相容網頁不會采取額外的措施來優化其在iPhone OS裝置上的視覺體驗,但是一般均能成功地在裝置上進行顯示。

如果您已經擁有一個網站或Web應用,首先需要確定其能在iPhone OS裝置上正常工作。同時,您應考慮建立一個自定義圖示,使用者可以将該圖示放在主螢幕上并使用網頁剪輯功能。實際上,這樣使用者就能在他們的主螢幕上保留一 個看起來像本地應用程式圖示的,指向您網站的書簽。了解有關建立自定義圖示以及如何讓iPhone OS裝置上的網頁内容具有良好視覺效果的更多資訊,請參考 iPhone人機界面指南之Web應用。 混合應用程式 在iPhone OS中您可以建立一個結合本地程式和網頁功能的程式。 混合應用程式 是一個本地iPhone應用程式,它通過Web視圖區域來展示其結構和功能,但是仍然包含标準的iPhone OS使用者界面元素。混合應用程式讓使用者通過一個稱為Web視圖 (如 “Web視圖” 所述)的元素通路網頁内容。确切地說,如何在您的應用程式中使用Web視圖由您決定,但是應避免讓使用者覺得您的應用程式僅僅是一個小型的網頁浏覽器。混合應用程式應像一個本地iPhone應用程式一樣運作;而不應凸顯依賴網絡資源這一事實。 三種應用程式風格 根 據視覺和行為特征,資料模型以及使用者體驗,本文檔定義了三種程式風格。在您深入閱讀之前,需要強調的是,這些分類的命名和描述是為了幫助您清楚地确認您的 設計方案,并不表示所有的iPhone應用程式都必須嚴格地遵循這些分類。描述這些風格是為了幫助您了解不同風格的應用程式具有不同的設計方案。

  1. 注意:應用程式的風格并沒有規定實作方法。雖然本文檔主要闡述本地的iPhone應用程式設計,但是此處探讨的程式風格同樣可以在iPhone OS裝置的網頁或混合應用程式中實作。

複制代碼 在您閱讀這三種應用程式風格時,思考一下每種風格的特點如何增強您的iPhone應用程式中的功能和的整體使用者體驗。在您了解iPhone應用程式的不同設計風格時,記住以下問題有助于發掘最适合您的應用程式的特征組合:

  • 您設想使用者是出于什麼樣的動機去使用您的應用程式?
  • 您計劃中的使用者會獲得怎樣的使用者體驗
  • 您應用程式的目标或專注點是在哪兒?
  • 您的應用程式如何組織,顯示人們關心的資訊?是否和應用程式的主要任務有天然的關系?

效率型應用程式 效率型應用程式 具有組織和操作具體資訊的功 能。效率型應用程式通常用于完成比較重要的任務。郵件是效率型應用程式的典型例子。目的的嚴肅性并不意味着效率型應用程式是幹癟無趣的,但是這種應用程式 确實需要比較精簡的使用者體驗,進而不會阻礙使用者的工作。是以,成功的效率型應用程式将使用者體驗的重點放在任務上,使用者可以快速地找到需要的東西,輕松地完 成必要的操作,以完成該任務繼而轉向其他事務。效率型應用程式通常分層組織使用者資料。因為使用者可以逐漸将選擇具體化,直到達到期望的具體程度,以找到所需 的資訊。iPhone OS提供了表格視圖,保證了這一過程在iPhone OS裝置上良好的使用者體驗(更多有關使用者界面的資訊,請參考 “表格視圖” )。圖1-1顯示了這種類型資料結構的示例。 圖 1-1   效率型應用程式通常分層組織資訊

iOS 人機界面指南

效率型應用程式中的典型的使用者互動模型通常包含:

  • 組織清單
  • 從清單中添加和删除
  • 逐漸細化資訊直到達到目标的詳細級别,而後執行與該詳細級别對應的任務

效率型應用程式一般采用多個視圖,通常每一視圖顯示一個層次的資訊。使用者界面通常簡單,整潔且由标準視圖和控件組成。效率型應用程式 通常沒有很多自定義界面。原因在于效率型應用程式專注于資訊和任務,而非環境或體驗。在衆多類型的iPhone應用程式中,效率型應用程式最有可能在設定 應用程式中提供使用者可操作的選項或者設定功能。這是因為效率型應用程式工作中涉及到大量資訊以及許多潛在的通路和管理方法。但是,需要強調的是,使用者很少 需要改變這些設定,是以這裡不應包含那些能夠在主界面中更改的配置資訊。 實用型應用程式 實用型應用程式 完成的簡單任務對使用者輸入要求很低。使用者打開實用型應用程式,是為了快速檢視資訊摘要或是在少數對象上執行簡單任務 。天氣程式(如圖1-2所示)就是一個實用型應用程式的典型例子。它在一個易讀的摘要中顯示了重點明确的資訊。 圖 1-2   天氣程式是實用型應用程式的例子

iOS 人機界面指南

實用型應用程式具有視覺上的吸引力,但是又能夠突出它們顯示的資訊。使用者使用實用型應用程式來檢視一些事情的狀态或是查找一些東西,是以使用者希望能夠快速 友善地看到他們感興趣的資訊。是以,實用型應用程式的使用者界面十分簡潔,并提供簡單的,标準的視圖和控件。實用型應用程式一般以平面清單的方式顯示資訊; 使用者通常不需要深入資訊層次結構。實用型應用程式中的每一個視圖通常都提供同樣的資料組織結構和細節深度,但是資料來源可以不同。由此,使用者可以打開單個 實用型應用程式以對多個主題進行相似處理。一些實用型應用程式能顯示打開的視圖的數量;由此使用者可以按順序浏覽,在一個視圖後選擇另一個視圖。圖1-3顯 示了這種類型的資料組織結構。 圖 1-3   實用型應用程式通常在平面清單中顯示資料

iOS 人機界面指南

實用型應用程式的使用者互動模型非常簡單:使用者打開程式浏覽資訊摘要,然後能夠選擇改變資訊的設定或來源。實用型應用程式可能需要支援頻繁修改設定和資訊來 源,是以它們通常在主視圖的背面提供一小部分這樣的選項。使用者可以點選位于主視圖右下角的,與資訊按鈕相似的按鈕來檢視主視圖的背面。在調整完成之後,用 戶點選完成按鈕即可傳回主視圖的正面。在實用型應用程式中,主視圖背面的選項是應用程式功能的一部分,而不是使用者設定一次以後就極少再用的一組偏好設定。 是以,實用型應用程式不應該把特定設定放在設定應用程式中。圖1-4顯示了天氣應用程式在主視圖背面提供的配置選項。 圖 1-4   使用者可以在天氣應用程式的背面進行調整

iOS 人機界面指南

沉浸式應用程式 沉浸式應用程式 提供具有豐富視覺效果的全屏環境,專注于内容和使用者 對内容的體驗。使用者通常使用沉浸式應用程式進行娛樂,不論是玩遊戲,觀看多媒體内容還是執行簡單的任務。雖然很容易發現遊戲非常适合這種iPhone應用 程式風格,但是您可以想象一下,沉浸式應用程式的特點也可以增加其他類型任務的吸引力。呈現一個獨立環境,不顯示大量的文字資訊,需要使用者注意力的任務就 十分适合采用沉浸式應用程式。例如,一個應用程式模拟了使用氣泡水準儀的體驗,它在全屏環境下執行的很好,即使它不符合遊戲的定義。在這類程式中,也像遊 戲中一樣,使用者的焦點在于視覺上的内容和體驗,而非體驗背後的資料。圖1-5顯示了沉浸式應用程式的例子,它模拟了實際的使用者體驗并執行了簡單的任務。 圖 1-5   沉浸式應用程式不一定是遊戲

iOS 人機界面指南
  1. 注意: 雖然橫向顯示的程式啟動時首頁按鈕應處于螢幕的右邊,但是圖1-5中顯示的水準儀程式啟動時的方向恰恰相反。這保證了裝置邊緣的實體按鈕不會幹擾測量。關于啟動的更多資訊,請參考“啟動”一節。

複制代碼 沉 浸式應用程式通常隐藏裝置的使用者界面,代之以自定義使用者界面,由此增強使用者融入該應用程式的感覺。使用者期望尋找和探索成為沉浸式應用程式體驗的一部分,所 以非标準控件顯得更為适合。雖然沉浸式應用程式運作時可能涉及到大量資料的處理,但是通常不顯示這些資料,不讓使用者順序檢視或探究明細。而是将資訊呈現在 遊戲内容中,如播放,故事或是體驗。同樣由于這個原因,沉浸式應用程式通常顯示自定義導航方法以配合環境,而标準的,資料驅動的方法則用于實用型應用程式 或效率型應用程式中。沉浸式應用程式的使用者互動模型由應用程式提供的體驗決定。雖然它不像遊戲一樣需要在設定中提供程式特定配置,但是其他類型的沉浸式應 用程式可能需要提供。沉浸式應用程式也可能在主視圖背後提供配置選項。選擇一種應用程式風格 在了解效率型應用程式,實 用型應用程式和沉浸式應用程式風格以後,考慮一下您的應用程式顯示的資訊類型和所能完成的任務。理論上來說,您應建立的應用程式類型已經十分明顯,您可以 開始動手開發了;但實際上并不總是那麼簡單。這裡有一個假設的情景來幫助您做出決定。如果您有一個想要關注的主題,考慮一下與其相關的對象和任務。想象一 下人們對這一主題的不同了解。例如,拿棒球作為例子。棒球在衆多事物中會讓您想起,團隊,遊戲,統計,曆史和球員等。因為棒球對于一個應用程式主題來說可 能過于廣泛,是以僅考慮球員。現在,想象一下如何建立一個與球員有關的應用程式,例如,采用他們棒球卡上的肖像。您可以開發一個效率型應用程式來幫助認真 的收藏家管理他們的棒球卡收藏。使用清單的格式,您可以在團隊,球員和賽季的層次結構中顯示卡片。在詳細資料視圖中,使用者能夠記錄他們在哪裡獲得卡片,為 卡片花費了多少錢,卡片目前的市場價值和卡片的副本數量。由于此應用程式的重點在于定義收藏的資料,是以使用者界面簡化了資訊收集和添加的任務。您也可以開 發一個實用型應用程式來顯示特定棒球卡片的目前市場價值。每一視圖都看起來像一張棒球卡片,上面添加了它的目前價值,視圖背面可以允許使用者選擇特定的卡片 來追蹤和顯示。因為該應用程式的重點在于獨立卡片上,是以使用者界面強調卡片的外觀并提供一個或兩個控件以允許使用者查找新卡片。當然,您也可以開發一款遊 戲。遊戲的重點可能在于使用者對個别棒球卡片的某些統計知識或是識别知名卡片的能力。又或者,僅用棒球卡片作為另一類型遊戲中的圖示,比如滑動拼圖遊戲。在 這些情況中,應用程式的重點均為棒球卡片的圖像和遊戲的玩法。使用者界面通過顯示某些棒球主題控件,隐藏iPhone OS使用者界面的方式來滿足這一點。需要重申的是,不要局限于單個程式風格。您可能會發現不同程式風格的特點組合起來最符合您的程式目标。如果有疑問,就簡 化問題。将功能清單減少到最小,并建立一個僅執行單個簡單任務的程式(更多建議請參考“給出産品定義說明”。 )當您看見人們如何使用并對應用程式作出響應時,您可以選擇對應用程式重點做輕微修改或是更改呈現方式,由此建立應用程式的另一版本。或者,您可能發現對于同一概念有更多或更少的細節要求的版本需求。當您有個現成的計算機應用程式時 如 果您已有一個計算機應用程式,不要隻是将其移植到iPhone OS上。iPhone OS裝置的使用方法與台式計算機和筆記本電腦大不相同,使用者對于使用者體驗的期望也不同。記住,使用者使用iPhone OS裝置時通常處于移動,紛雜的環境中。這意味着使用者希望打開您的程式時,能夠輕松簡單地使用,進而可以進行别的活動。如果您的應用程式要求使用者在很長一 段時間内集中注意力,那麼如果您在将該應用程式轉換為iPhone OS程式時,您需要重新考慮其結構和目的。如果您的桌面應用程式能夠執行複雜的任務或是一系列任務,那麼您應該仔細觀察使用者是如何使用該應用程式的,以便 找到當使用者處于移動狀态時希望應用程式能夠完成的子任務。例如,支援項目排程,結算和費用報告的,面向企業的應用程式可以轉換為顯示項目的進度摘要的 iPhone實用型應用程式,或是允許移動使用者跟蹤其業務相關開支的效率型應用程式。當您考慮将您的桌面應用程式轉換為iPhone應用程式時,應在設計 應用程式時遵循80-20規則。最大比例使用者(至少80%)将使用應用程式中非常有限的特性,僅一小部分使用者(不大于20%)将使用所有的特性。是以,您 應仔細考慮,您是否想讓您的iPhone應用程式承載僅有少部分使用者使用的強大特性。您應意識到桌面應用程式可能是能夠提供那些特性的較好環境,同時,将 您的iPhone應用程式的重點放在滿足絕大部分使用者需求的特性上通常來說是明智的選擇。案例研究:将桌面應用程式移植到iPhone OS 為 了幫助您了解如何建立桌面應用程式的iPhone OS版本,本小節介紹了一些常見的Mac OS X應用程式和其對應的iPhone OS版本的一些設計差異。當您了解了每個應用程式中哪些特點和功能适合iPhone OS時候,那麼,當您需要開發iPhone應用程式時,您就可以清楚明白所需要的設計方案。郵件 郵件是Mac OS X中最明顯的,廣泛使用,且廣受好評的應用程式。同時它也是功能非常強大的應用程式,允許使用者撰寫,收取,分類,存儲郵件,跟蹤行動項目和事件,建立筆記 和邀請。郵件在一個多面闆的視窗中提供大部分功能。這對于使用桌上型電腦電腦的使用者來說十分友善,因為他們可以将一直郵件視窗留在顯示屏上(或最小化到 Dock)并在他們選擇的任意時刻轉到郵件視窗。圖1-6顯示了郵件檢視視窗和撰寫視窗提供的許多功能。圖 1-6   桌上型電腦上的郵件程式在兩個視窗中提供了很多的強大功能

iOS 人機界面指南

但是在人們處于移動狀态時,他們需要一個更加簡單,且能夠快速完成其核心功能的郵件程式。是以,在iPhone OS的裝置上的郵件應用程式緻力于實作使用者處理郵件的最關鍵事項:收取,撰寫,發送和管理郵件。為此,使用者界面被精簡,使得使用者的帳戶和郵箱的結構更為清 晰,并将使用者的注意力集中在郵件上。iPhone OS中的郵件應用程式是一個效率型應用程式的完美例子。為了便于内容導航,iPhone OS中的郵件應用程式利用了人們郵件中自然的層次結構,使用一連串的頁面顯示帳号,郵箱,郵件清單以及郵件内容。使用者可以在清單中選擇某一項,從一般(帳 号清單)至特殊(一條資訊)地進行深入了解,并檢視與該項相關的事物。了解更多效率型應用程式風格的iPhone應用程式,請參考“效率型應用程式” 。 另外,iPhone OS中的郵件應用程式允許多種操作,比如建立和發送。這是通過顯示幾個可以被點選且使用者熟悉的控件來實作的。圖1-7顯示了郵件應用程式如何使使用者在 iPhone OS中檢視和發送郵件變得簡單。注意每一屏上方的元素,它們讓使用者更輕松地了解到他們過去和目前在程式中所處的位置。圖 1-7   iPhone OS中的郵件應用程式使得檢視和發送郵件變得簡單

iOS 人機界面指南

iPhoto 另一個從Mac OS X應用程式重構為iPhone OS程式的例子是iPhoto。在桌上型電腦上,iPhoto支援全面搜尋和管理,具有強大的編輯能力以及富有創意的列印選項。當人們在他們的桌上型電腦或筆記本 電腦上使用iPhoto時,他們希望能夠檢視和管理整個收藏集,對照片進行調整并且以各種方式來操縱照片。雖然iPhoto的重點是使用者的内容,但是程式 也在其視窗中提供了豐富的功能。圖1-8顯示了桌上型電腦上iPhoto的使用者界面。圖 1-8   iPhoto使用者界面

iOS 人機界面指南

但是在使用者處于移動狀态時,他們沒有時間來編輯圖檔(同時他們也不期望能夠列印圖檔);而是希望能夠快速浏覽并分享他們的圖檔。為了在iPhone OS裝置上滿足這一要求,蘋果提供了照片應用程式。該程式能夠顯示圖檔并與其他使用者分享圖檔。照片應用程式的使用者界面完全以照片為核心;以至于實際裝置的 使用者界面被部分隐藏。當使用者選擇以幻燈片形式檢視圖檔時,照片應用程式将隐藏導航欄,工具欄甚至狀态欄。當使用者需要檢視這些工具欄時,這些元素又以半透明 狀态顯示出來。照片應用程式使用層級結構使得使用者可以來輕松地整理,查找照片:使用者可以選擇一個包含了一系列照片的相冊,而後從相冊中選擇單張照片。按照 這種方式,照片應用程式就是一個結合了效率型應用程式風格和沉浸式應用程式風格特性(了解更多有關這些風格的資訊,見“三種應用程式風格” )的應用程式。圖1-9顯示了使用者如何在照片應用程式中檢視圖檔。圖 1-9   照片應用程式中的三個界面

iOS 人機界面指南

另外,照片應用程式提供臨時視圖,稱為動作表單(如“警告,動作表單以及模式視圖” 所述),進而讓使用者能夠在不退出圖檔檢視視圖的情況下使用其他的功能。圖1-10顯示了照片應用程式如何為單張圖檔提供動作表單。圖 1-10   照片應用程式的動作表單

iOS 人機界面指南

人機界面準則:建立優秀的使用者界面 優秀的使用者界面應該遵循一些人機界面設計準 則,這些準則來源于人—也即使用者—思考和工作的方式,而不是裝置的能力。沒有吸引力的,令人難以了解的或是不合邏輯的使用者界面會讓一個原本優秀的程式成為 垃圾,而漂亮,直覺而又吸引人的使用者界面不僅可以改善程式的功能,還能激發使用者的正面依賴感。即使您已經對基本的設計準則有所了解,這一章也值得您讀一 下,因為本章着重講述了這些準則是如何應用在iPhone應用程式中的。隐喻 盡可能按照現實世界中的對象和操作來對您 程式中的對象和操作模組化。這能夠幫助使用者,尤其是新手,迅速地了解您的應用程式的是如何工作的。檔案夾就是一個典型的軟體隐喻。因為在現實世界中,人們将 檔案放在檔案夾裡,是以人們就能夠迅速地了解在計算機上将資料放入檔案夾的概念。iPhone OS中的隐喻包括iPod播放控件,點選控件來觸發事件,滑動開關,以及調色闆上的資料。雖然隐喻暗示了iPhone OS使用者界面中對象和操作的含義,但是并沒有限制其軟體實作。回到檔案夾的例子,軟體實作的檔案夾對象所具有的容量與現實世界中所對應的檔案夾的實體容量 毫無關系。在您設計程式時,需要注意iPhone OS中已存在的隐喻,避免重複定義。同時,檢查您的程式功能是否有對應的可用的自然隐喻。記住,即使如此,相較于為了适應您的應用程式使用者界面而勉強使用 現實世界的對象或操作的隐喻而言,使用标準控件和操作更為妥善。除非您選擇的隐喻能得到大部分使用者的認可,包括那些會增加而不是減少使用者困惑的隐喻。直覺操作 直 觀操作意為人們感到他們在實體上,而非抽象地控制某物。其優點在于,使用者更容易了解他們的行為對于操作對象所産生的結果。得益于多點觸摸的使用者界 面,iPhone OS使用者享有高度直覺的操控感。手勢的使用讓人們感到螢幕上顯示的對象具有更大的親和力和更強的操控感,因為他們并不需要用任何中間裝置(如滑鼠)就操控 它們。為了提高您的iPhone應用程式的操控感,您應確定:

  • 當使用者操作螢幕上的對象時,這些對象保持可見
  • 使用者操作的結果是一目了然的

即看即點 iPhone應用程式比人更善于記住一些選項,指令,資料等。通過清單的形式來提供選擇 或選項,使用者可以輕松地浏覽它們并作出選擇。盡量減少文本輸入的需要,使得使用者就不必花費大量時間輸入指令,您的程式也不需要執行大量的錯誤檢查。讓使用者 做出選擇,而不是要求他們進行開放式的輸入,這樣能夠讓使用者能夠集中精力通過您的程式完成任務,而不是疲于記憶如何操作。 回報 用 戶除了需要看到操作的結果外,還需要得到操作及時的回報,以及在長時間操作時的狀态報告。您的程式應通過一些視覺上的變化來回應使用者的每一個操作。例如, 當使用者點選清單項時,確定其高亮顯示。 聲音提示同樣有效,但是它不能作為主要或唯一的回報機制。因為人們可能在無法聽見聲音或是必須關閉聲音的環境中使用iPhone OS的裝置。另外,您不能使用iPhone OS的系統聲音,因為他們已經和系統警告關聯。iPhone OS繁忙時會顯示活動訓示符以自動提供回報。在持續幾秒以上的操作過程中,您的應用程式應顯示完成進度,在适當的情況下,還應顯示解釋性消息。精細且有意 義的動畫是向使用者提供回報的良好方式。動畫貫穿于整個iPhone OS,即使是在非沉浸式的程式中。作為一種提供回報的方式,動畫隻是用于增強使用者的體驗,但不是使用者體驗的焦點。 使用者控制 讓 使用者來觸發和控制操作,而不是您的應用程式。保持操作簡單直接,使得使用者可以輕松地了解和并記住他們。盡可能使用使用者已經熟悉的标準控件和行為。在操作開 始前應提供充分的取消操作的機會,并且確定在使用者觸發潛在的破壞性操作時取得操作确認。盡可能使使用者能夠正常終止正在進行的操作。 美學完整性 雖 然一個程式的首要目的是為了完成某個任務,即使該任務僅僅是玩遊戲,我們也不應低估程式外觀的重要性。這是因為外觀對功能有深遠的影響:一個看起來零亂或 者缺乏邏輯的程式是很難被了解和使用的。美學上的完整性并不是用來衡量您的程式有多漂亮,而是衡量您程式的外觀和程式功能結合得有多好。例如,一個效率型 應用程式應盡量精簡裝飾性的元素并置于背景中,同時使用标準控件和行為以突出任務。沉浸式程式是另一極端,使用者期待有趣且需要一些探索的漂亮外觀。雖然程 序趨向于提供消遣,但是其外觀仍需和其任務結合。仔細設計這類程式的使用者界面,進而為使用者提供内部一緻的使用者體驗。

設計iPhone應用程式:從産品定義到品牌宣傳 當您開發iPhone應用程式時,您需要了解iPhone OS以及移動裝置環境的各個方面給您的設計帶來的影響。本章涵蓋了從産品定義到品牌宣傳的一系列程式設計問題的指導方針,并介紹了在iPhone應用程式中是如何解決這些問題的。給出産品定義說明 在開始設計您的應用程式之前,精确定義您的應用程式是用來做什麼的非常重要。一個比較好的方法是撰寫一份産品定義說明 — 用于描述您的應用程式的主要功能及目标使用者的文檔。建立産品定義說明不僅僅是一種練習,相反地,它是将一系列産品功能轉化成一個清晰完整的産品的最佳方法 之一。首先,花些時間定義您的目标使用者:他們是專家還是新手?是嚴謹的還是随和的?是帶着特定任務來尋求幫助還是為了娛樂消遣的?了解這些可以幫助您根據 使用者的特殊需求來定制使用者體驗和使用者界面。由于您是在設計一個iPhone應用程式,有一些使用者需求是已知的。例如:

  • 他們是移動的。
  • 他們希望能夠盡可能快地打開您的應用程式,并立即看到有用的資訊。
  • 他們應隻需要簡單幾步就能夠完成任務

然後思考一下,什麼樣的特性使得您的使用者和iPhone OS的其他使用者區分開。他們是商人,青少年還是退休人員?他們是否會在每一天的結束時,或是當他們查收電子郵件時,亦或是當他們有一些額外時間時,使用您 的應用程式呢?您對目标使用者定義得越準确,您對使用者界面的外觀,體驗以及功能的設計也就越準确。例如,如果您的應用程式是幫助商務人士記錄他們的開支,那 麼您的使用者界面應該側重于提供正确的分類,并且易于輸入費用,而不是詢問許多無關核心功能的細節。另外,您最好為界面選擇一種比較專業的顔色,并且不會讓 使用者産生視覺疲勞。或者,如果您的應用程式是一個以青少年為目标閱聽人的遊戲,那麼您可能需要一個活潑一點的使用者界面,煽動性的語言,時尚一點的色彩。最 後,研究一下您打算提供的産品功能。根據您對目标使用者的想象,嘗試将一系列産品功能提煉成一份産品定義說明文檔,這份文檔描述了您的産品所提供的解決方案 以及您的目标使用者。例如, iPhoto桌面應用程式允許使用者整理,編輯,共享,列印和檢視照片,但一份優秀的産品定義說明不僅僅包括産品的功能,同時還描述了其目标使用者。是以,一 份完整的iPhoto産品定義說明可能是“一種為業餘攝影愛好者設計的,簡單易用的照片管理應用程式。”注意,在産品定義說明中包含您的目标使用者定義是多 麼重要:想象一下,如果iPhoto被定義為成“一種為專業攝影師提供的,簡單易用的照片管理應用程式”,那将有多麼不同。一份優秀的産品定義說明就像一 個工具,您應該在整個開發過程中使用它來确定功能,工具和術語的是否合适。尤其重要的是清除那些不符合産品定義說明的元素,因為iPhone應用程式沒有 多餘空間去支援非核心功能。例如,想象一下,您正在考慮開發一個人們在購買生活用品時可以使用的iPhone應用程式。在計劃階段,您可能需要考慮使用者可 能喜歡的許多種不同的活動,例如:

  • 擷取關于特定食品的營養資訊
  • 尋找打折和優惠資訊
  • 建立和使用購物清單
  • 定位商店
  • 查閱食譜
  • 比較價格
  • 檢視購物總額

然而,您認為您的使用者最關心的是記住他們需要購買的所有東西,盡可能地省錢,并且很可能急于帶着采購品回家。根據這些對使用者的定義, 您可以為您的應用程式制作一份産品定義說明,比如“為忙碌的人群提供建立購物清單,查找折扣的工具。”通過這份産品定義說明過濾掉産品的潛在功能,您決定 主要側重于如何使購物清單易于建立,存儲和使用。您也為使用者提供了查找他們購物清單上所列商品的打折資訊的功能。即使其他功能也是有用的(并且可能成為其 他應用的主要功能),但它們不符合這個應用程式的産品定義說明。當您确定了一個可靠的産品定義說明,并且開始使用它來過濾提出的那些功能,您可能還希望用 它來確定最初關于應用程式類型的決定是正确的。如果您在頭腦中帶着一個具體的應用程式類型開始了您的開發過程,您可能會發現定義産品定義說明的過程已經改 變了其面貌。 ( 關于您所能開發的不同類型的應用程式,請參考 “三種應用程式風格” ) 優秀iPhone應用程式的共性 優秀的iPhone應用程式精确地滿足了使用者需求,同時提供了使用者想要的體驗。為了幫助您在應用程式中平衡這兩點,本小節歸納了優秀iPhone應用程式的一些共有特點,并就如何将這些特點融合到您的産品中給予了建議。 簡單和易用性 簡 單和易用是所有軟體的基本原則,但在iPhone應用程式中它們尤其重要。iPhone OS使用者很可能在使用您的應用程式的同時,還做着其他事情。如果使用者無法快速明白如何使用您的應用程式,他們很可能會轉而使用其他競争者的應用程式,而且 不會再嘗試您的應用程式。當您設計應用程式流程以及使用者界面時,請遵循如下準則以保證應用程式的簡單且易于使用:

  • 如何使用您的應用程式應顯而易見。
  • 常見的功能和資訊集中于螢幕的頂部。
  • 最大限度地減少文本輸入。
  • 簡潔地表達基本資訊。
  • 為所有可點選元素提供一個指尖大小的目标區域。

以下各小節就簡單和易用性的準則進行更詳細的說明。 顯而易見 您不能假設使用者有時間(或能夠分出注 意力)來研究您的應用程式是如何運作。是以,您必須努力讓應用程式能夠立刻被使用者了解。您的應用程式的主要功能應該一目了然。您可以最大限度地減少使用者必 須選擇的控件數量,并清晰地辨別這些控件以便使用者明白它們的功能。例如,在内置的秒表功能中(時鐘應用程式的一部分),如圖3-1所示,使用者一眼就可以看 出哪個是停止按鈕,哪個是啟動按鈕,哪個是用來記錄每圈時間。 圖 3-1   内置秒表功能的用法顯而易見

iOS 人機界面指南

由上而下的布局 使用者可以用手指或大拇指點選一個iPhone OS的裝置的螢幕。使用者傾向于用他們的非慣用手握住裝置(或擱在手心),用慣用手的手指點選裝置。當使用大拇指時,人們要麼将裝置一手握住,然後用大拇指 點選,要麼将裝置握于雙手間,同時用兩根大拇指點選。無論用哪一種方式,對于使用者來說螢幕最上方都是最顯眼的。由于這些使用模式,您在設計應用程式的使用者 界面時,應将最常使用的(通常也是重要的)資訊置于最明顯且最友善的頂部。當使用者從螢幕頂部浏覽到底部的時候,呈現的資訊的過程應該是由一般到特殊,從高 級到低級的過程。 最大限度地減少所需的輸入 無論使用者是點選控件還是使用鍵盤,輸入資訊都會占用他們的時間和精力。如果 您的應用程式需要使用者在擷取有用資訊前進行大量輸入,這将降低使用者效率,并且會妨礙使用者繼續使用您的程式。當然,您通常需要一些來自使用者的資訊。但您應該 在使用者提供的資訊和您回報給使用者的資訊之間做出權衡。換句話說,努力為使用者提供的每一條資訊回報盡可能多的資訊或功能。這樣,當使用者使用您的應用程式時他 們會感到正在取得進展,并沒有被阻塞。當您向使用者請求輸入時,考慮使用表格視圖(或選擇器)來代替文本輸入框。對使用者來說,從一個清單中選擇一項通常比輸 入單詞容易得多。有關表格視圖和選擇器的細節,請分别參考 “表格視圖” 和 “選擇器” 小節。 簡潔地表達資訊 當 使用者界面上的文本簡短而又直接的話,使用者就能夠快速地了解它。是以,簡明扼要地表達最重要的資訊,并顯著地突出該資訊,這樣使用者不必為了所尋找的資訊或為 了弄清下一步該怎麼做而閱讀大段的文字。為了幫助您做到這一點,您可以像一位報紙編輯一樣地思考,努力用壓縮标題的風格傳遞資訊。為控件加上簡短的标簽 (或易于了解的符号),以便使用者一眼就能了解如何使用它們。 為控件提供指尖大小的目标區域 如果您的布局将控件放置得過 于靠近,使用者需要花費更多的時間和精力來确定他們點選的區域,并且很容易點錯控件。一個簡單易用的使用者界面應該合理地配置設定控件和其他使用者界面元素,使得用 戶能夠更友善地點中控件。例如,内置的電腦應用程式顯示很大的,易于點選的控件,每個控件的目标區域大約44x44像素。圖3-2 展示了電腦應用程式。 圖 3-2   内置電腦應用程式的控件

iOS 人機界面指南

将重點放在主要功能上 一個令使用者滿意且愉快iPhone應用程式應将重點放在它的主要功能上,是以,當您設計應用程式時,要始終将重點放在您的産品定義說明上,并確定每個産品功能和使用者界面元素支援這個說明。關于如何建立産品定義說明的相關建議, 請參考 “給出産品定義說明” 。 一個比較好的方法是确定在每個上下文中什麼是最重要。當您決定要在每個螢幕中顯示什麼時不斷問問自己,這是使用者現在需要的關鍵資訊或功能嗎?或者,想得更 加具體些,當使用者在商場購物或在會議間步行時,這個資訊或功能是不是他們需要的?如果不是,那它在另一個不同上下文中是不是重要?或者它終究不是那麼重 要?例如,一個幫助使用者記錄汽車裡程數的應用程式不應關心汽車經銷商的位置。當您遵照這些準則時,您的解決方案變得更為清晰。特别是,您的應用程式使用起 來更為顯而易見,且最小限度地減少了使用者輸入。集中關注您的解決方案的重點,進而使得使用者能更加友善,快速地進入到應用程式中最重要的部分(關于這些準則 的具體内容,請參考 “簡單和易用性” )。 例如,内置的月曆應用程式(如圖3-3 所示)重點在于日期及當天發生的事件。使用者可以使用具有明确标簽的按鈕顯示目前日期,選擇檢視選項,添加事件等。最重要的資訊是日期以及與之相關的事件, 也是最顯眼的。使用者輸入也很簡單,它允許使用者從清單中選擇時間,重複間隔以及提醒選項,而不是要求按鍵輸入。 圖 3-3   内置的月曆應用程式重點是日期和事件

iOS 人機界面指南

有效地溝通 溝通和回報,在iPhone應用程式中的重要性和在桌面應用程式一樣。使用者需要知道他們的請求是否正在處理 中,以及他們的行為是否會導緻資料丢失或其他問題。盡管如此,避免矯枉過正的溝通也很重要,例如在并非真正嚴重的情況下提醒使用者或過于頻繁地請求确認。動 畫是一種進行有效溝通的好方法,前提是它不會妨礙使用者的任務或影響他們的效率。精細适當的動畫可以傳遞資訊,提供有用的回報,以可視化的方式向使用者展示他 們行為的結果。但是過多或無意義的動畫會阻礙應用程式的流程,影響其性能,并困擾使用者。在所有與使用者的基于文本的溝通中,一定要使用以使用者為中心的術語, 特别是要避免在使用者界面中使用技術術語。例如,在Wi-Fi無線網絡偏好設定界面使用清楚的,非技術性的語言來描述如何将裝置連接配接到網絡,如圖3-4所 示。 圖 3-4   在應用程式的使用者界面中使用以使用者為中心的術語

iOS 人機界面指南

适當的支援手勢 人們習慣用手指來操作iPhone OS裝置獨特的多點觸摸界面,使用如輕敲,搖動,夾等手勢來選擇,操作,閱讀網頁内容或使用應用程式。使用手指操作裝置其真正的優勢在于:手指總是可用 的,它們有能力完成許多不同的動作,并且它們給使用者一種直覺的,和裝置關聯的感覺,這是諸如滑鼠等外部輸入裝置無法實作的。然而,手指有一個主要缺點,和 滑鼠指針相比,無論是在大小,形狀還是靈敏度方面都要差很多。在螢幕的上下文中,手指永遠不可能像滑鼠指針一樣精确。所幸的是,您可以用一個良好的使用者界 面設計來彌補手指輸入裝置帶來的挑戰。在大多數情況下這意味着您需要確定您的布局可容納一個指尖的平均大小,同樣也意味着您需要響應手指的動作以讓使用者獲 得其期望的行為。使用者進行一些特定的動作,進而獲得特殊的結果,這種動作稱之為 手勢 。例如,使用者點選一個按鈕來選中 它,并搖動,或拖拽以滾動一個清單。因為内置的應用程式一緻使用,iPhone使用者已經習慣了這些手勢。是以,您應該在您的應用程式中恰當地使用這些手 勢,避免混淆。還有一些更加複雜的手勢,如swipe或pinch open,一樣在内置的應用程式中被使用,但它們并不常見。一般來說,這些手勢被用作快捷方式來加快完成任務,而不是執行任務的唯一方法。例如,當檢視郵 箱中郵件清單時,使用者顯示消息預覽行中的删除按鈕并點選它來删除一條正在檢視的消息。使用者可以用兩種不同的方式顯示删除按鈕:

  • 點選導航欄中的編輯按鈕,這個按鈕将在每個預覽行裡顯示一個删除控件。然後點選該控件就會顯示删除按鈕。
  • 在特定的預覽行使用swipe手勢,就會顯示這條消息的删除按鈕。

第一種方法需要一個額外的步驟,但容易被發現,因為它僅僅需要點選已經清楚辨別的編輯按鈕。第二種方法顯然更快,但它需要使用者學習并 記住特定swipe手勢。是以,為確定您的應用程式易于使用,盡量使用常見的那些手勢中,如點選,拖拽等。您應該避免将諸如swipe或pinch open等不常見的手勢作為執行一個動作的唯一方法。您的應用程式應該有一個簡單直接的方法來執行一個動作,即使它意味着多點選幾次。在大多數應用程式 中,避免定義新的手勢同樣很重要,特别是這些新手勢所執行的動作已經和标準手勢想關聯。一個例外是沉浸式的應用程式,在這種應用中可以适當地加入自定義的 手勢。例如,一個效率型應用程式要求使用者作出畫圈手勢來在一個表格行中顯示删除按鈕,這樣的應用程式将是混亂的且難于使用的。但另一方面,一個遊戲要求做 出畫圈的手勢來轉動遊戲的某部分就顯得比較合理。表3-1列出了使用者可以使用的标準手勢。不要試圖重新定義這些手勢的含義;相反地,如果您的應用程式中支 持這些行為,請確定也能夠支援與之對應的手勢。了解更多有關如何處理由手勢産生的事件,請參考 iPhone應用程式程式設計指南 。 表3-1 用于和iPhone OS裝置互動的手勢

手勢

操作

Tap

按或選擇一個控件或項目(類似于單擊一次滑鼠)。

Drag

拖動

Flick

快速滾動或搖晃

Swipe

在一個表視圖行中,顯示删除按鈕。

Double tap

放大并将内容或圖檔部分居中。縮小(如果已經被放大的話)。

Pinch open

放大

Pinch close

縮小

Touch and hold

在可編輯文本中,顯示一個放大的光标視圖。

慎重地融合品牌元素 當品牌的設計巧妙且簡約時,它是最有效的。使用者使用您的iPhone應用程式來完成某項任務或娛樂 時,他們不希望産生被強迫觀看廣告的感覺。是以,您應該以一種低調的方式引入您的品牌的顔色或圖檔。例如,您可以在視圖和控件中使用一個自定義的配色方 案。應用程式圖示是例外情況,它應該突出顯示您的品牌(應用程式圖示是使用者在安裝完應用程式後,在主螢幕中可以看到的圖示),使用者會經常看到這個圖示,因 此,花費點時間讓您的品牌更吸引眼球是有必要的。關于如何設計一個應用程式圖示,請參考 “應用程式圖示 。

處理常見任務 如果您具有使用桌面計算機或便攜式計算機應用程式的經驗,那麼您會發現iPhone應用程式處理很多常見任務的方式與它們不同。本節從人機界面的角度描述了這些常見任務;關于代碼實作的技術細節,請參考 iPhone應用程式程式設計指南 。 啟動 iPhone應用程式應能夠迅速啟動,進而使用者可以立即開始使用它們。啟動時,iPhone應用程式應該:

  • 指定适當的狀态欄樣式(關于可用樣式的資訊請參考“狀态欄” 一節)。
  • 顯示一幅酷似應用程式初始螢幕的啟動圖像。這減少了使用者感覺到的應用程式的啟動時間。要了解更多有關的資訊,請參考“啟動圖像” 。
  • 避免顯示“關于”視窗,啟動畫面,也不要提供任何其他類型的妨礙使用者立即使用應用程式的體驗。
  • 默 認情況下,在螢幕上縱向啟動應用程式。如果您打算讓應用程式隻能在螢幕橫向時使用,則無論裝置目前的方向如何,都在螢幕上橫向啟動應用程式。如果必要的 話,要允許使用者将裝置旋轉為橫向。僅橫向顯示的應用程式應該支援兩種“橫向”—不論“首頁”按鈕在螢幕右側還是左側,都能夠正常顯示應用程式。如果裝置本 身已經被橫向放置,則這種僅橫向顯示的應用程式就按照裝置的方向啟動。否則,在預設情況下,僅橫向顯示的應用程式在啟動時,“首頁”按鈕隻能在應用程式的 右方。
  • 将您的應用程式恢複到最後一次運作時的狀态。
  1. 重要:不要在您的應用程式 安裝完成後提示使用者重新開機或重新啟動他們的裝置。如果您的應用程式存在記憶體使用或其他方面的問題,導緻除非系統是剛剛啟動過的,否則您的應用程式難以運 行,那麼您需要解決這些問題。例如,您可以閱讀iPhone應用程式程式設計指南中的“高效地使用記憶體”一節,了解如何開發運轉良好的應用程式。

複制代碼 停止 當使用者打開另一個應用程式或使用裝置自身功能(比如電話)時,iPhone應用程式必需終止。要特别注意的是,應用程式的終止不需要使用者點選應用程式關閉按鈕或在菜單上選擇“退出”操作。iPhone應用程式應該:

  • 随時準備接收退出或終止通知。是以,要盡可能快并且在合理情況下經常儲存使用者資料。
  • 當應用程式終止時,盡可能詳細地儲存它的目前狀态。例如,如果您的應用程式能夠顯示滾動的資料,則應該儲存目前的滾動位置。

iPhone應用程式不應該直接通過代碼退出,因為這樣做會使使用者覺得應用程式崩潰了。但是,可能有些時候,外部環境會阻止您的應用 程式正常運作。處理這種情況的最好方法是讓螢幕顯示醒目的内容,在螢幕上描述該問題并向使用者提出解決問題的建議。這樣做會在以下兩方面對使用者有所幫助:

  • 它提供了回報資訊,告訴使用者您的應用程式沒有出現錯誤,使使用者放心。
  • 它能夠控制使用者行為,讓他們決定是采取一些糾正的行動來繼續使用您的應用程式,還是按下“首頁”按鈕來打開另一個應用程式。

如果在一些特定的環境中,您的應用程式隻是部分功能無法正常工作,那麼在使用者想要激活該功能時,您可以在螢幕上顯示資訊或警告。雖然警告在設計上不具備太大的靈活性,但如果您可以保證以下幾點,它也可以成為一種很好的選擇:

  • 非常簡潔地描述目前情況
  • 提供一個執行糾正動作的按鈕
  • 僅 當使用者試圖通路無法正常工作的功能時顯示警告

和所有的警告一樣,使用者越少看到它們,就說明它們越有效。關于建立警告的更多資訊請參考 “使用警告” 。 管理設定或配置選項 iPhone 應用程式可以向使用者提供設定功能,使使用者可以根據自己的喜好來設定應用程式行為或配置選項,進而改變應用程式的一些功能。可設定的應該是一些使用者設定一次 後很少(如果有的話)改變的資訊,比如帳戶名稱。使用者可以在内置的“設定”程式中檢視特定應用程式的設定。配置選項是一些使用者可能想要經常改變的值,比如 在清單中顯示的分類的類型;配置選項應該由應用程式本身提供。您應該把設定和配置選項看作是互斥的。也就是說,您不應該在您的應用程式中同時提供設定和配 置選項。iPhone應用程式最好不要求使用者指定任何設定。這樣使用者無需提供設定資訊就可以立即使用這些應用程式。為了在您的應用程式中實作這一點,您可 以采用以下這些設計決策:

  • 使您的解決方案滿足80%使用者的需求。 當您采用這樣的設計時,大多數使用者不需要提供設定資訊,因為您的應用程式已經按照大部分使用者所預期的行為進行了設定。可以不考慮那些隻有少數使用者需要的功能和大部分使用者僅需使用一次的功能。
  • 從其他途徑擷取盡可能多的資訊。 如果您可以用到任何使用者在内置應用程式或裝置設定中提供的資訊,那麼您可以向作業系統查詢這些資訊的值;不要讓使用者再次輸入它們。
  • 如果您必須向使用者請求設定資訊,請在應用程式内部提示使用者輸入資訊。 然後立即将這一資訊存儲在您的應用程式的設定中。這樣,使用者在開始使用您的應用程式之前,就不會被迫退出應用程式而先打開“設定”界面。如果使用者稍後需要更改這些資訊,他們可以随時在您的應用程式的設定中進行更改。

如果使用者想要打開“設定”程式,就必須首先退出您的應用程式,而您應該不鼓勵使用者采取這樣的行為。系統并沒有提供支援這一行為的圖示或控件,而且建議您也不要為此建立自定義的圖示或控件。如果您決定一定要在您的iPhone應用程式中提供設定,請參考 iPhone應用程式程式設計指南 中的“設定程式包”一節,了解如何在您的代碼中實作對這些功能的支援。 注意: 應用程式特定的設定不應該包括使用者幫助的内容。

與設定不同,由于使用者會選擇從新資源或以不同布局來檢視資訊,是以配置選項很可能經常發生改變。對于這些選項所做的更改,您可以動态地作出響應,因為使用者 不需要離開您的應用程式來通路它們。您可以在主使用者界面或螢幕的背面提供配置選項。具體使用哪一種技術更合理取決于該選項代表的是不是主要功能以及使用者對 其進行更改的頻率。例如,“月曆”程式允許使用者以日,星期和月為機關檢視他們的時間表。這些選項本來可以在螢幕的背面提供給使用者,但是檢視月曆的不同部分 是程式的主要功能,并且使用者可能會頻繁改變所關注的焦點。再舉一個例子,“天氣”程式的主要功能是顯示一個城市的目前天氣狀況和6天之内的天氣預報。雖然 讓使用者能夠選擇是以攝氏還是華氏為機關顯示溫度也很重要,但是使用者不太可能經常改變這個選項,是以,将它放在主使用者界面中并不合理。在“天氣”螢幕的背面 提供溫标選項,就顯得既友善又不突兀。 支援複制和粘貼 iPhone OS提供了編輯(或粘貼闆)菜單,它支援在文本視圖,Web視圖和圖像視圖中的“剪切”,“複制”,“粘貼”,“選擇”和“全選”操作。一種向使用者顯示該 菜單的方法是,首先使用者觸摸并按住裝置螢幕直到出現放大的視圖(該視圖允許使用者将插入點或選擇點移動到正确的位置),然後放開。如果目前的上下文支援這種 菜單,則當使用者擡起手指時它就會出現。菜單中的“選擇”操作可以選擇視圖中的單詞或應用程式定義的項。使用者可以通過拖動目前所選區域的把手來擴大他們選擇 的内容。在内容被選中之後,菜單就會根據情況顯示“剪切”,“複制”或“粘貼”。您可以調整編輯菜單的某些行為以适應您的應用程式。(要了解更多關于如何 用編碼實作這些行為的資訊,請參考 iPhone應用程式程式設計指南 中的“複制和粘貼操作”一節。)例如,您可以指定菜單中顯示的操作,您可以 改變菜單出現的位置。但是,您不能控制菜單本身的顔色和形狀。編輯菜單中可見的操作在目前上下文都是有意義的。例如,如果沒有任何内容被選中,菜單中不會 包含“複制”或“剪切”操作,因為這些操作要作用于被選中的内容。同樣,如果有内容被選中,菜單則不包含“選擇”操作。如果您要在一個自定義視圖中支援編 輯菜單,您應該確定菜單所顯示的操作适用于目前上下文。請注意,您不能在菜單中顯示自定義的操作。UIKit會根據可用空間的大小,在插入點或被選中内容 的上方或下方顯示編輯菜單,并放置菜單指針,以便使用者可以看到菜單操作是如何與目前内容相關聯的。您可以通過程式設計的方式,在菜單出現之前決定它的位置,因 此,在必要的情況下,您可以防止應用程式的使用者界面中的重要部分被菜單遮住。請注意,雖然“觸摸并按住”這個操作是向使用者顯示編輯菜單的主要方式,但是用 戶也可以通過輕按兩下文本視圖中的一個單詞來選中它,同時顯示出菜單。如果您要在自定義視圖中支援菜單,那麼您應該對這兩種操作都做出響應。此外,您可以定義 在使用者輕按兩下時預設被選中的對象。如果一個按鈕執行的是編輯菜單中已有的操作,則要避免建立這樣的按鈕。例如,要讓使用者執行複制操作的話,使用編輯菜單比向 使用者提供“複制”按鈕更好,因為使用者會很困惑,為什麼在您的應用程式中要有兩種方式來完成同樣的事情。您可以啟用對靜态文本的選擇,但是應該僅當靜态文本 顯示對使用者有用的内容時才這樣做。例如,使用者有可能想要複制一幅圖像的标題,但是他們可能不想複制一個标簽項或螢幕标題的标簽,比如“帳戶”。在文本視圖 中,預設應該是按單詞選取的。按鈕的标題應該是不可以被選中的,因為很難不觸發按鈕的點選事件并顯示出編輯菜單。一般來說,具有按鈕行為的元素不需要被選 中。如果您在自己的應用程式中支援“剪切”,“複制”和“粘貼”操作,您也應該支援撤銷和重做(在 “支援撤銷和重做” 介紹)。這是因為編輯菜單不需要在動作執行前進行确認,而且如果使用者改變了主意,他們總是希望能夠撤銷最近的操作。 支援撤銷和重做 iPhone OS在文本視圖中為使用者提供了撤銷和重做的能力。使用者通過搖晃裝置發起撤銷動作,裝置會顯示一個警告,允許使用者撤銷他們剛才的輸入,重做先前未完成的輸入 或取消撤銷操作。UIKit允許您在自己的應用程式中以一種更通用的方式支援撤銷(有關如何在代碼中實作這一行為的資訊,請參考 撤銷架構 )。您可以指定:

  • 使用者可以撤銷和重做的操作
  • 您的應用程式應該何時将一個搖晃事件了解為觸發撤銷
  • 支援多少層的撤銷

為了給您的應用程式中的撤銷和重做功能提供出色的使用者體驗,您應該:

  • 提供簡短的描述性的語言精确地向使用者描述他們正在撤銷或重做的内容。 UIKit 自動采用字元串“撤銷”和“重做”作為撤銷警告按鈕的标題,但是您需要提供一至兩個單詞來描述使用者可以撤銷和重做的動作。(請注意,“取消”按鈕不能被改 變。)例如,您可以提供文本“删除姓名”或“位址變更”來建立如“撤銷删除姓名”或“重做位址變更”這樣的的按鈕标題。一定要避免提供過長的文本:過長的 按鈕标題會被截斷,并且使用者很難解讀。此外,由于文本位于按鈕的标題中,是以要使用标題式的大寫方式,而且不要添加标點。(簡單地說,标題式的大寫方式是 指每個單詞都大寫,但冠詞,并列連詞和四個或四個字母以下的介詞除外。)
  • 避免重載搖晃操作。 即使您 可以通過程式設計來制定您的應用程式何時将一個搖晃事件了解為觸發撤銷,但是如果搖晃可以用來執行另一個動作,使用者會感到迷惑。搖晃操作是使用者期望的發起撤銷 和重做的主要方式,但是在适當情況下,您也可以在導航欄中包含系統提供的“撤銷”和“重做”按鈕。如果在您的應用程式環境中,明确地顯示一個專用按鈕來執 行這些功能非常重要,則您可以采取這種做法,但這種情況很不常見。
  • 考慮您允許撤銷和重做的動作所處的環境。 一般來說,使用者希望他們所做的更改和執行的動作能夠立即生效。撤銷和重做功能應該盡可能明确地關聯到使用者目前所處的環境,而非先前的環境。

啟用推送通知 當您的應用程式注冊了“蘋果推送通知服務”時,您可以在有新資料到來時向使用者發出警告,即使您的應用程式沒有運作。當裝置收到的消息是發給一個沒有運作的應用程式時,它可以通過以下方式通知使用者:

  • 在應用程式的主螢幕圖示上更新一個 标記
  • 播放警告聲音
  • 顯示一條警告消息

或者您可以組合使用以上方式。使用者的反應可能是啟動應用程式來處理新資料,或者僅僅是注意到有新資料到來就可以了。(要了解如何在代碼中處理推送通知,請閱讀 蘋果推送通知服務程式設計指南 。)

  1. 注意:推送通知的投遞是無保證的。此外,使用者也可以拒絕接收系統範圍内的通知。推送通知的目的是提醒使用者有新資料到達,而不是向您的應用程式傳遞關鍵的資料。

複制代碼 内 置的設定程式中的“通知”部分為每一個注冊了“蘋果推送通知服務”的應用程式提供推送通知的設定。針對每一個應用程式,iPhone OS都可以讓向使用者設定是否允許标記,聲音和警告消息。您應該花一些時間來思考哪種類型的事件更能讓通知引起使用者的注意。通知應該向使用者提供有用的,可操 作的資訊,這些資訊是使用者即使在沒有使用您的應用程式時也想要得到的。當您确定了使用者可能關心的事件之後,您還應該讓使用者決定每種事件應該産生什麼類型的 通知(如果有通知的話)。如果使用者無法定制您的應用程式的推送通知,那麼使用者可能會被他們不感興趣的通知所打擾 。使用者可以選擇他們想要接收的通知的類型,是以以下三種類型您應該全部支援:

  • 标記。 标記是一種對使用者打擾最小的方式,它告訴使用者有新的他們可能感興趣的内容出現。标記是一個紅色的小橢圓形,出現在主螢幕圖示的右上角。您對于标記的外觀沒 有任何控制權,它僅包含數字,不包含字母和标點符号。标記适用于告訴使用者有多少項有待他們查閱。例如,标記中的數字表示的可能是未讀的消息數,新配置設定的任 務數,或目前有多少個遠端玩家正在進行遊戲。
  • 聲音。 您可以提供自定義的警告聲音,也可以使用内置的警告聲音。如果您建立了自定義的聲音,一定要保證它簡短,獨特并且制作專業。(要了解有關自定義聲音的技術要求,請參考蘋果推送通知服務程式設計指南 中 的“準備自定義警告聲音”一節。)請注意,當有通知被投遞時,您不能強制使裝置振動;使用者能夠控制收到警告時是否伴有振動。如果通知到達本身就為使用者提供 了足以采取行動的資訊,在這種情勢下,采用一種容易辨識的聲音是非常适合的。例如,一個協同任務管理系統在成員的任務完成時可能會伴随着一段獨特的聲音。 僅僅是聽到這種聲音,使用者就知道任務已經完成了。
  • 警告。 警告是一種通知使用者有新内容時最打擾使用者的一種方式。在警告的頂端顯示您的應用程式的名稱,在它下面是您發送的消息,在警告底部有一至兩個按鈕。如果您指 定了兩個按鈕,則警告會在左側顯示“關閉”按鈕,右側顯示“檢視”按鈕(使用者點選“檢視”按鈕可以在解除警告的同時啟動您的應用程式)。如果您隻指定了一 個按鈕,則警告隻顯示一個“确定”按鈕。“關閉”按鈕和“确定”按鈕都會關閉警告而不會打開您的應用程式。警告會打斷使用者的工作流程,是以最好謹慎地使用 它,并且隻用它來投遞有關某事件的簡短的,重要的消息。特别地,一定要避免在您的警告消息中包含任何廣告内容。

保證應用程式的可用性 一個易于使用的應用程式應該允許有障礙的使用者在輔助程式或裝置的幫助下可以 成功使用。iPhone OS裝置包含許多功能,使所有使用者都可以更加友善地使用該裝置,比如可視化語音郵件,縮放以及語音控制功能。您無需在應用程式中采取任何動作,使用者可以直 接獲益于這些功能。有了VoiceOver,事情就變得不一樣了。VoiceOver是蘋果公司一項創新性的螢幕閱讀技術,它讓使用者無需看到螢幕,就可以 控制他們的裝置。為了確定VoiceOver使用者可以充分地使用您的應用程式,您可能需要提供一些關于使用者界面中視圖和控件的自定義資訊。幸運的是,在默 認情況下,UIKit控件和視圖是易于通路的,是以,當您以完全标準的方式使用這些标準元素時,您隻有很少的額外工作要做(如果有的話)。使用者界面的自定 義程度越高,您需要提供的自定義資訊就越多,以便VoiceOver可以正确地向具有視覺障礙的使用者描述您的應用程式。

  1. 重要:為了使您的應用程式易于通路,您要做的工作包括為VoiceOver提供它所需的資訊來幫助使用者使用您的應用程式。您不需要為了适應VoiceOver而改變使用者界面的視覺設計。

複制代碼 讓您的iPhone應用程式易于被VoiceOver使用者通路是非常正确的做法。這種做法還可以增加您的使用者群,并有可能幫助您滿足由各主管機建構立的可用性準則。 提供搜尋功能并顯示搜尋結果 UIKit提供了搜尋欄控件,您可以使用它顯示一緻的啟動搜尋的界面,但要您需要在您的應用程式中實作搜尋功能。(要了解有關搜尋欄的更多資訊,請參考 “搜尋欄” ;要了解有關在代碼中處理搜尋結果的更多資訊,請參考 UISearchDisplayController類參考 。)為了確定搜尋擁有實用而友善的使用者體驗,請花一些時間考慮如何實作搜尋過程以及如何顯示其結果。一般來說,您應該:

  • 為您的資料建立索引,以便随時進行搜尋。
  • 實時過濾本地的資料,一旦使用者開始輸入,您就顯示結果,并且随着使用者繼續輸入而逐漸縮小結果範圍。
  • 如果可能的話,在使用者輸入時也同時過濾遠端資料,但是,如果這部分的響應時間有可能将搜尋結果的計算推遲1-2秒鐘以上,一定要經過使用者的允許。
  • 在清單上面顯示搜尋欄或者在清單内顯示索引。
  • 避免為搜尋打開一個标簽頁,除非它是您應用程式中的主要功能,應該被辨別為一個不同的模式。

雖然實時過濾資料通常能夠産生出色的使用者體驗,但這并不總是可行的。如果無法實時過濾資料,您可以在使用者在鍵盤上點選“搜尋”按鈕之 後再開始搜尋過程。如果您要這樣做,一定要提供有關搜尋進度的回報資訊,以便讓使用者知道搜尋程序沒有停止。一種方法就是盡快顯示文本結果,并為那些可能需 要更長時間檢索的資料顯示占位符内容。例如,在YouTube中,使用者點選“搜尋”按鈕發起視訊的搜尋。如果網絡連接配接速度很慢,YouTube會先顯示 “載入中……”消息和旋轉的活動訓示符,讓使用者知道搜尋正在進行。然後,YouTube會顯示一個結果清單,其中,每一行填寫搜尋的文本結果(比如視訊的 标題和收視率),以及帶有虛線輪廓的立方體自定義圖像。随着使用者浏覽視訊标題的清單,下載下傳完的視訊縮略圖會逐漸替換掉原來的虛線立方體。像這樣,在更多的 資料仍在下載下傳時向使用者顯示部分搜尋結果,能夠及時地為使用者提供有用的資訊。如果您處理的資料可以歸類于多個不同的類别,您可以提供一個範圍欄。範圍欄包含 至多4個範圍按鈕,每個按鈕代表一種分類。例如,“郵件”程式提供了一個範圍欄,允許使用者将他們的搜尋集中在郵件的發件人,收件人或主題字段,或者将搜尋 範圍擴大至包含所有的字段。如果範圍欄能夠幫助使用者集中他們的搜尋,或者能夠大大減小搜尋結果的數量,請您考慮使用範圍欄控件。(要了解如何在您的代碼中 實作範圍欄,請參考 UISearchBar類參考 。) 使用使用者的位置資訊 使用者喜歡能夠自動使用他們的物 理位置對内容進行标記的功能,或者查找目前在附近的朋友。使用者同時也希望當他們不想與他人分享自己的位置時能夠禁用這些功能。使用者可以通過“設定” > “一般”中的“位置服務”設定來選擇同意(或拒絕)系統範圍内對他們的實體位置的通路。如果使用者關閉了位置服務,而随後使用的應用程式功能需要獲知他們的 位置,則使用者會看到一個警告,此警告告訴他們必須改變他們的首選項設定才能使用此功能。該警告不允許使用者在應用程式的内部做此更改;相反,他們必須進入設 置應用程式改變他們的首選項設定。這樣可以確定使用者充分意識到他們正在授予整個系統使用他們位置資訊的權限。為了讓使用者知道他們為什麼要打開位置服務,您 最好隻在使用者試圖使用一項顯然需要獲知他們目前位置的功能時,才顯示警告。例如,當位置服務關閉時,使用者仍然可以使用地圖應用程式,但是,當他們通路發現 并跟蹤其目前位置的功能時,會看到警告。如果位置服務處于關閉狀态,iPhone OS會在您的應用程式第一次試圖通路位置資訊時顯示警告。Core Location架構為您提供了一種擷取使用者偏好設定的方法,使您避免不必要或不适當地觸發警告。(要了解關于這個程式設計接口的更多資訊,請參考 Core Location架構參考 。)知道了使用者的偏好設定資訊,您就可以盡可能準确地為需要位置資訊的功能觸發警告,或是完全地消除警告。

  • 如果您的應用程式在沒有這些資訊的情況下無法執行它的主要功能,您最好在使用者啟動應用程式時盡快讓他們看到警告。使用者不會為此感到困擾,因為他們明白應用程式的主要功能依賴于知曉他們的位置。
  • 如 果使用者的位置不是您應用程式基本功能的一部分,您可以選擇簡單地限制那些用到位置資訊的功能。例如,當位置服務關閉時,相機應用程式會自動關閉将使用者的位 置添加到他們所拍攝的照片的功能。但應用程式并不會阻止使用者拍照,除非他們改變偏好設定的選項,這是因為“将位置資訊添加到照片”隻是一個附加功能,而不 是基本功能。
  • 如果某項功能需要位置資訊才能工作,一定要避免在使用者實際選擇該功能之前執行任何程式設計調用觸發警告。(擷取使用者偏好設定資訊的調用不會觸發警告。)這樣,您就可以避免讓使用者感到奇怪,為什麼您的應用程式在使用者做一些看似不需要位置資訊的事情時,想要得到他們的位置資訊。

處理方向的變化 使用者可以随時旋轉iPhone OS裝置,并且他們期望正在浏覽的内容做出适當的調整。在您的iPhone應用程式中,請務必:

  • 注意加速度表的值(關于加速度表和加速度表程式設計接口參考的更多資訊,請閱讀iPhone應用程式程式設計指南 )。如果合适的話,您的應用程式應該對所有的裝置方向變化做出響應。
  • 如 果您的應用程式使用者界面的某一部分隻在一個方向上顯示内容,則該區域隻适于在此方向上出現,而且不需要對裝置方向的變化做出響應。例如,當使用者選擇一個 iPod視訊來觀看時,無論目前裝置方向如何,該視訊都橫向顯示。這向使用者表明,要旋轉裝置以便更好地觀看該視訊。該例中最重要的一點是,iPod沒有提 供“旋轉”按鈕;相反,使用者知道要旋轉裝置,因為視訊是橫向顯示的。讓使用者旋轉裝置來正确地浏覽應用程式使用者界面中需要特定方向的部分。避免建立新的控件 或定義新的操作,告訴使用者旋轉裝置。
  • 利用一步操作就能改變方向的過程,完成更順暢且往往更快的旋轉。但是,如果您的螢幕布局非常複雜,當發生方向變化時,您可以選擇執行一種淡入淡出的轉換。要了解如何在您的代碼中支援一步操作過程,請參考UIViewController類參考 。
  • 使用者經常因為想要“看到更多”而将他們的裝置旋轉為橫向。如果您隻是按比例放大螢幕的内容,則無法滿足使用者的期望。相反,您應該重新打封包本行,而且如果必要的話,重新安排使用者界面的布局,以便更多的内容填充到螢幕當中。

使用聲音 使用者期望iPhone OS裝置具有非常美妙的聲音,無論是作業系統的聲音(比如鈴聲和警告聲),還是應用程式的聲音(比如媒體播放,環境聲音和配樂)。此外,使用者還希望裝置發 出的聲音能夠遵從他們的偏好和目的。使用者決定聲音的音量,以及他們是否想要聽到這些聲音。但是有些時候,即使目前的設定表明使用者更傾向于靜音,他們還是希 望聽到某些聲音。例如,使用者總是期望聽到他們設定的警告聲。從本質上講,使用者想要聽到他們期待聽到的聲音,而不願聽到他們不期待的聲音。為了幫助您順應這 樣的需求,iPhone OS提供了一些程式設計接口,您可以用來:

  • 描述您應用程式的聲音應該如何與裝置上的其他聲音保持一緻。
  • 確定應用程式的聲音能夠按照使用者的期望進行播放。

在您決定如何處理應用程式中的聲音之前,您需要了解,當使用者調整裝置控件和使用外部裝置(如耳機和耳麥)時,他們期望應用程式和裝置如何運作。 振鈴/靜音切換—使用者的期望 如果使用者希望做到以下幾點,他們可以使用“振鈴/靜音”切換将他們的裝置靜音:

  • 避免被意外的聲音打擾,比如電話鈴聲和來信提示音。
  • 避免聽到使用者操作的附帶聲音,比如鍵盤或其它回報的聲音,偶然的聲音或應用程式啟動的聲音。
  • 避免聽到遊戲的聲音,包括附帶的聲音和配樂,它們并不是使用遊戲程式所必需的。

例如,在劇場中,使用者會将他們的裝置切換至靜音狀态,以免打擾到劇場中的其他人。在這種情況下,使用者仍然想要使用他們裝置上的應用程式,但他們不想被不期望的或沒有明确要求的聲音吓到,比如鈴聲或新消息提示音。但是,對于旨在産生聲音的使用者動作,“振鈴/靜音”切換 不 會消除它們産生的聲音。例如:

  • 媒體應用程式中的媒體播放不會被“振鈴/靜音”切換靜音,因為媒體播放是使用者明确請求的。
  • 時鐘應用程式的警告不會被“振鈴/靜音”切換靜音,因為此警告是使用者明确設定的。
  • 語言學習程式中的音效素材不會被“振鈴/靜音”切換靜音,因為使用者采取明确行動想要聽到它。
  • 語音聊天程式中的會話不會被“振鈴/靜音”切換靜音,因為使用者啟動此類應用程式的唯一目的就是進行語音聊天。

這種行為遵循使用者控制的原則,因為是由使用者(而不是裝置)來決定聽到使用者明确請求的聲音是否合适。 音量按鈕—使用者的期望 用 戶使用裝置的音量按鈕來調節裝置播放的所有聲音的音量,包括歌曲,應用程式的聲音和裝置的聲音。這意味着使用者可以随時使用音量按鈕關閉任何聲音,無論“振 鈴/靜音”切換的目前狀态如何。在某些情況下,應用程式适宜在其界面為使用者提供音量設定功能。例如,YouTube顯示了一個音量滑動器,使用者可以用它調 整正在觀看的視訊的音量。盡管YouTube正在運作,使用者可以交替使用此滑動器和音量按鈕來調整視訊的音量。這是因為在應用程式運作時,滑動器起到音量 按鈕代理的作用:滑動器同時作用于應用程式的音量和整個系統的音量(鈴聲音量除外)。如果您需要顯示音量滑動器,當您使用MPVolumeView類時一 定要使用系統提供的滑動器。請注意,如果目前激活的音頻輸出裝置不支援音量控制(比如A2DP裝置),音量滑動器将被相應的裝置名稱取代。使用音量按鈕調 整應用程式目前播放的音頻,也會同時調整整個系統的音量(鈴聲音量除外)。(在目前沒有播放任何音頻時,使用音量按鈕調整鈴聲的音量。)這種行為遵循使用者 控制的原則,因為使用者可以随時決定裝置發出的聲音應該有多大。有時候,應用程式可能需要調整相對和絕對音量級,以便在其音頻輸出中産生最佳的混合。但是, 最終的音頻輸出的音量應該始終受到系統音量的控制,無論它是通過音量按鈕還是音量滑動器進行調整的。這就意味着,對應用程式音頻輸出的控制仍然掌握在它所 歸屬的使用者的手中。 耳機和耳麥—使用者的期望 使用者插入耳機和耳麥就可以獲得私人的聲音體驗并且解放他們的雙手。在使用和 不使用附件的情況下,使用者對應用程式的行為有着不同的期望。當使用者插入耳機和耳麥時,他們是打算繼續聽目前的聲音,隻是轉為私下收聽。是以,他們希望目前 正在播放音頻的應用程式繼續播放此音頻。當使用者拔下耳機和耳麥時,他們不想自動将正在收聽的内容分享給他人。是以,他們希望目前正在播放音頻的應用程式暫 停播放,讓他們準備好之後顯式地重新開始播放。 無線音頻—使用者的期望 使用者非常喜歡無線耳機的便捷,比如藍牙A2DP裝置。人們使用無線耳機和耳麥的理由與使用有線耳機和耳麥的理由是一樣的:他們想要私下聽到聲音,并希望解放他們的雙手。使用者對無線耳機的使用者體驗也有着非常類似的期望:

  • 當使用者連接配接到無線音頻裝置時,他們打算繼續聽到目前的聲音,隻是轉為私下收聽。在這種情況下,他們希望音頻能夠繼續播放。
  • 當使用者斷開無線裝置時(或者當裝置超出作用範圍或關閉時),他們不想自動将正在收聽的内容分享給他人。在這種情況下,他們希望暫停正在播放的音頻,讓他們準備好之後顯式地重新開始播放。

即使使用者沒有實際地插入或拔出無線音頻裝置,他們仍然希望能夠選擇一個不同的音頻通道。為了解決這個問題,iPhone OS自動顯示了一個控件,讓使用者選擇音頻輸出路線。由于選擇不同的音頻通道是使用者發起的動作,是以使用者希望正在播放的音頻繼續播放。 定義應用程式的音頻行為 如果聲音能夠增強使用者體驗或應用程式的功能,或者是使用者體驗或應用程式功能必不可少的一部分,您需要決定您的音頻應該如何與裝置的音頻環境保持一緻,以及應該如何響應使用者的動作。例如,你需要決定:

  • 當裝置鎖定或切換至靜音時,您的音頻是否應該繼續播放。
  • 您的音頻是否應該與目前正在播放的其他音頻混合在一起(比如iPod中的歌曲)。
  • 您的應用程式是否需要順序或并行地同時處理音頻輸入和輸出。
  • 您的音頻是否應該在中斷後自動恢複播放。

要控制應用程式的音頻在這些情況下應該如何表現,請使用“音頻會話服務”或AVAudioSession類。這些程式設計接口不能産生聲 音;它們可以幫助您說明您的音頻應該如何與裝置上的音頻進行互動,以及如何響應中斷和裝置配置中的變化。音頻會話服務管理采用AV基礎架構,音頻隊列服 務,OpenAL和I/O音頻單元等技術産生的聲音。

  1. 注 意:如果您的應用程式僅需要産生功能附帶的使用者界面音效,您可以使用“系統聲音服務”。系統聲音服務是iPhone OS技術,用于産生警告聲音和使用者界面音效,以及振動;它不适用于任何其他目的,而且它産生的聲音不由“音頻會話服務”管理。使用此技術的示例請參考 SysSound示例項目。

複制代碼

  1. 重要:無論您使用何種技術産生音頻,無論您如何定義它的行為,電話可以随時中斷目前正在運作的應用程式。這是因為任何應用程式都不應該阻止使用者接聽來電。

複制代碼 音頻會話是您應用程式和系統之間的音頻中介。從使用者體驗的角度來看,音頻會話最重要的一個方面就是定義應用程式的音頻行為的 類别 。 為了提供良好的音頻使用者體驗,應選擇能最好地描述應用程式音頻的類别。一定要基于類别的語義做出選擇,而不是其行為的确切集合。這将確定您的應用程式能夠 按照使用者的期望運轉。此外,如果日後該類别的行為集合被重新修訂,它也能最大限度地保證您的應用程式正常工作。在極少數情況下,您可能需要通過為音頻會話 添加屬性,來增強或改進某個類别的标準行為。例如,您可以添加 kAudioSessionProperty_OtherMixableAudioShouldDuck屬性,以確定您應用程式的音頻比所有其他音頻(電 話音頻除外)更響亮。如果能夠在其他音頻播放的同時聽到您應用程式的音頻對使用者來說很重要的話,您可以這樣做。但是,您應該注意,一個類别的标準行為代表 了大多數使用者的期望,是以您應該在添加屬性完善此行為之前,認真仔細地考慮一下。要了解有關音頻會話屬性的更多内容,請參考 音頻會話程式設計指南 中 的“微調類别”一節。您可以根據裝置目前的音頻環境選擇您的類别。舉個例子,如果使用者可以在收聽其他音頻(不是您提供的配樂)的同時使用您的應用程式,您 可能想要這樣做。如果這對于您的應用程式來說行得通,一定要避免強迫使用者停止收聽他們的音樂,或是在您的應用程式啟動時強迫使用者做出明确的配樂選擇。要了 解如何做到這一點,參考 “小結” 中 的場景2。當應用程式正在運作時,您也可以改變音頻會話的類别,雖然很少有必要這樣做。這樣做的主要原因是,應用程式需要在不同的時刻支援錄音和播放。在 這樣的應用程式中,更好的做法是根據需要在Record類别和Playback類别之間進行切換,而不是選擇Play和Record類别。這是因為選擇 Record類别,會使警告(比如來信警告)在錄音正在進行時沒有聲音。表4-1列出了您可以使用的音頻會話類别。iPhone OS預設為音頻會話配置設定了Solo Ambient類别。

  1. 注 意:由于空間有限,表4-1隻顯示了每個類别名稱的最後一部分。每個類别的實際符号名稱均以AVAudioSessionCategory開始。例 如,MixWithOthers屬性的實際符号名稱是 kAudioSessionProperty_OverrideCategoryMixWithOthers

複制代碼 表 4-1   您可以用來在應用程式中定義聲音行為的音頻會話類别

類别

含義

通過“振鈴/靜音”切換置為無聲并鎖定

與其他音頻混合

SoloAmbient

增強應用程式功能的聲音,應該将其他音頻靜音

Ambient

增強應用程式功能的聲音,但不應将其他音頻靜音s

Playback

對應用程式功能來說必不可少的聲音,可以與其他音頻混合

否(預設)是(當添加MixWithOthers屬性時)

Record

使用者錄制的音頻

PlayAndRecord

代表音頻輸入和輸出的聲音,順序地或并行地

否(預設)s是(當添加MixWithOthers屬性時)

AudioProcessing

執行輔助硬體的音頻編碼的應用程式(它不播放或錄音)

-

小結 下面是一些場景,它們說明了如何選擇音頻會話類别,以提供使用者期望的音頻體驗。 場景 1 . 假設您正在開發一個教育應用程式,幫助人們學習一門新的語言。您需要提供在使用者點選特定控件時播放的回報聲音;并提供在使用者想要聽到正确的發音示例時播放 的單詞和短語的錄音。在這個應用中,聲音對于應用程式的主要功能來說是必不可少的。人們使用該應用程式,收聽他們所學語言中單詞和短語的發音,是以,即使 當“振鈴/靜音”切換設定為靜音或裝置鎖定時,也應該播放應用程式的聲音。由于使用者需要清楚地聽到發音,是以,他們希望其他正在播放的音頻被靜音。為了産 生使用者期望的音頻體驗,您應該使用Playback類别。雖然您可以改進這一類别,以便與其他音頻(如 表4-1 中所述)進行混合,但是這個應用程式應該使用預設的行為,以確定其他音頻不會與使用者明确選擇要收聽的學習内容發生競争。 場景 2 . 假設您正在開發一個遊戲,讓使用者控制螢幕上的人物完成許多不同的任務。您需要提供各種各樣的遊戲音效和一段遊戲配樂。在這個應用中,聲音會大大提升使用者的 體驗,但它并不是主要任務必不可少的一部分。此外,使用者很可能希望能夠在靜音狀态下玩遊戲,或者一邊聽音樂庫中的歌曲(而不是遊戲的配樂)一邊玩遊戲。最 好的政策是,要了解當您的應用程式啟動時使用者是否正在收聽其他音頻。不要讓使用者選擇是否想要聽其他的音頻或您應用程式的配樂。相反,要使用“音頻會話服 務”的AudioSessionGetProperty功能,查詢kAudioSessionProperty_OtherAudioIsPlaying 屬性的狀态。根據查詢的結果,您可以選擇Ambient類别或Solo Ambient類别(這兩個類别都允許使用者在靜音狀态下玩遊戲):

  • 如果使用者正在收聽其他音頻,您應該假設他們想要繼續收聽,而不想被迫收聽遊戲的配樂。在這種情況下,您應該選擇Ambient類别。
  • 如果當您的應用程式啟動時,使用者沒有收聽任何其他音頻,應選擇Solo Ambient類别。

場景 3 . 假設您正在開發一個應用程式,為使用者提供準确,實時的到達所選目的地的導航訓示。您需要為行程中的每一步提供語音指導,以及一些回報聲音。此外,您認為用 戶希望在使用應用程式的同時,能夠聽到他們自己的音頻。在這個應用中,語音導航訓示代表了程式的主要任務。基于這個原因,您應該使用Playback類 别,它讓您的音頻在裝置鎖定或“振鈴/靜音”切換設定為靜音時仍能播放。為了讓人們在使用您應用程式的同時,收聽其他的音頻,您可以添加 kAudioSessionProperty_OverrideCategoryMixWithOthers屬性。但是,您也想要確定使用者可以在目前正在 播放的音頻之上,聽到應用程式的語音指令。要做到這一點,您可以将 kAudioSessionProperty_OtherMixableAudioShouldDuck屬性應用到音頻會話。這可以確定您的音頻比目前播 放的所有音頻(除了電話音頻)更加響亮。 場景 4 . 假設您正在開發一個部落格應用程式,允許使用者向中心網站上傳他們的文字和圖檔。您可能有一個簡短的啟動聲音檔案,各種各樣簡短的聲音效果(比如當使用者完成上 載時播放的聲音),以及當上載失敗時播放的警告聲音。在這個應用中,聲音會提升使用者的體驗,但它隻是附加的。程式的主要任務與音頻無關,使用者不需要聽到任 何聲音,也能成功使用該應用程式。在這種情況下,您可以使用“系統聲音服務”産生聲音。這是因為應用程式中所有聲音的音頻上下文都符合這一技術的目的,也 就是要産生使用者期望的,遵從裝置鎖定和“振鈴/靜音”切換的使用者界面音效和警告聲音。 提供選項 iPhone OS包含一些幫助使用者做出選擇的元素。當您需要在應用程式中提供選項時,您應該使用這些選擇方法,因為使用者已經熟悉了它們的行為。一般來說,您不應該試圖 複制在桌面計算機應用程式中看到的選擇控件的外觀和行為,比如應用程式菜單或一組單選按鈕。iPhone OS提供了以下元素,您可以用來向使用者提供選項:

  • 清單 (即表格視圖)。使用者點選清單中的某一行選擇一項。清單幾乎适合于顯示任何數量的選項。有關在應用程式中使用表格視圖的方法的詳細資訊,請參考“表格視圖” 。
  • 選擇器 ,包括日期和時間選擇器。使用者轉動選擇器的轉輪,直到每個轉輪顯示出值的相應部分,比如包含年,月,日的月曆日期。要了解有關在您的iPhone應用程式中使用選擇器的更多資訊,請參考“日期和時間選擇器” 和“選擇器” 。
  • 開關控件 。使用者将開關控件從一側滑動至另一側,顯示出兩個值之一。開關控制的設計意圖是在清單的内部提供一個簡單的選項。有關開關控件的更多資訊,請參考“開關控件” 。

提供許可協定或免責聲明 如果您随同iPhone應用程式提供了終端使用者的許可協定(或 EULA),App Store會顯示該協定,以便使用者在使用您的應用程式之前可以閱讀它。如果可能的話,盡量避免要求使用者在第一次啟動您的應用程式時,表示他們同意您的終端 使用者許可協定。這樣使用者能夠立即享用您的應用程式。但是,即使這是首選的使用者體驗,它可能無法在所有情況下都行得通。如果您必須在您的應用程式中顯示許可 協定,請嘗試采用一種與您的使用者界面相一緻的方式,這樣可以将給使用者造成的不便降到最低。同樣,如果您需要提供免責聲明,一定要平衡好業務需求與良好的用 戶體驗。如果可以的話,在您的應用程式描述或EULA中提供您的免責聲明,以便它可以用在App Store中。

設計您iPhone應用程式的使用者界面 iPhone OS中的使用者界面元素包括視圖和控件。視圖 是提供了良好定義的功能集合的内容區域。控件 則是能夠觸發即時動作或可視化結果的圖形對象。雖然一個應用程式的所有視圖和控件都包含在同一個應用程式視窗中,使用者卻是根據它們不同的可見狀态在螢幕 中與之互動的。iPhone OS定義了這些使用者界面元素的标準外觀,并提供了使用者所期望的行為。第二部分中的章節能夠幫助您了解可用的使用者界面元素的類型以及如何在您的應用程式的使用者界面中使用它們。

使用者界面概述 在深入研究視圖和控件的具體細節之前,先對這些元素在一起工作的 方式以及使用者期望的行為有一個較高層次的了解,對您來說大有裨益。本章将介紹構成大多數應用程式的各種視圖,幫助您了解它們的具體資訊以及如何使用它們。 想要詳細了解每一個使用者界面元素的外觀,行為和使用指南,請務必閱讀本章後面的章節。了解每個使用者界面元素是如何針對它的用法進行設計的,能夠幫助您在應 用程式中正确地使用它,并在适當的情況下根據您的需要定制使用者界面元素。應用程式的螢幕及其内容 無論是什麼類型的應用 程式,都有一個應用程式視窗,該視窗為您提供了一個能夠呈現應用程式的所有資訊的背景。但是使用者對這個視窗沒有概念,他們對應用程式的體驗來自螢幕上的畫 面,并且使用者通過螢幕對應用程式進行操作。雖然不是一個程式中的結構,但是您仍可以認為每個螢幕對應于應用程式的不同的可視化狀态或模式。當使用者浏覽信 息,切換标簽頁,或者點選“資訊”按鈕檢視側邊彈出的配置資訊時,他們看到的是各個獨立的螢幕。取決于程式的類型,您的應用程式的螢幕可能有多有少。例 如,郵件應用程式可以顯示一個帳戶螢幕,各個帳戶中的郵箱清單螢幕,各個郵箱内容的螢幕和顯示一條消息的螢幕,還有一個寫郵件的螢幕。然而,股票應用程式 隻顯示兩個螢幕:一個螢幕顯示公司清單和股票走勢圖,另一個螢幕顯示應用程式的配置資訊。通常,使用者會把應用程式螢幕和裝置螢幕當成是一回事。然而,應用 程式螢幕的内容可能會超出裝置螢幕的邊界,這就需要使用者滾動螢幕。例如,電話應用程式中的聯系人隻有一個單獨螢幕,即使它的内容是裝置螢幕的好幾倍。應用 程式的螢幕可以包含各種各樣的視圖和控件的組合。某些視圖會包含一些特定的控件,而有些控件可以用于很多不同的視圖當中。告警,動作表單和模式視圖和普通 視圖不同,普通視圖一般存在于應用程式的螢幕中,而它們浮動于應用程式的螢幕及其視圖之上。更多有關這些視圖的資訊請參考“告警,動作表單和模式視圖” 。下面四種類型的視圖在應用程式的使用者界面中具有特殊的地位,但是它們并不需要在每個應用程式中被包含或總是可見。

  • 狀态欄 。 這是一個獨一無二的視圖,雖然應用程式可以在一定程度上自定義狀态欄的外觀,但從技術角度講,它并不屬于應用程式視窗的一部分。更多資訊請參考“狀态欄” 。
  • 導航欄 。 這是個可選的視圖,它出現于狀态欄的下方,可以包括标題,按鈕和分段控件。更多資訊請參考“導航欄” 。
  • 标簽欄 。 這是個可選的視圖,它位于螢幕底部的邊緣,能夠切換應用程式中不同的模式。更多資訊請參考“标簽欄” 。
  • 工具欄 。 這也是個可選的試圖,它同樣位于螢幕底部的邊緣,包含在應用程式的目前上下文中完成特殊動作的控件。更多資訊請參考“工具欄” 。

圖5-1在一個應用程式螢幕中顯示了這些視圖中的三種。請注意,如果該應用程式使用工具欄,它将出現在圖中的标簽欄處。 圖 5-1   一個包含狀态欄,導航欄和标簽欄的應用程式螢幕

iOS 人機界面指南

在一個能夠顯示這四種視圖的組合的應用程式中,您可以将導航欄底部到工具欄頂部之間的區域視為 内容區 。在該區域中,應用程式螢幕可以包含任意視圖來顯示内容,如表視圖,web視圖和圖像視圖。圖5-2顯示了兩個在iPhone作業系統中可用的内容區視圖:表視圖的一種和圖像視圖。請參閱 “表視圖,文本視圖和Web視圖” 以了解更多有關這些視圖的行為和外觀,以及與其相關的控件。 圖 5-2   兩種類型的内容區視圖

iOS 人機界面指南

正如上文說過的那樣,有一些控件隻能在特定的視圖中使用。顯示提示符控件就是這樣的一個例子,它在表視圖中具有特殊用法。您可以在 圖8-1 中的左邊的清單中看到顯示提示符(它看上去像是一個大于号>)。在介紹其相應視圖的小節對這些控件有具體描述,但是,需要補充一點,也有少量控件(如詳細顯示提示符)具有更廣泛的用途。請參閱 “應用程式控件” 來獲得更多控件相關的資訊。 在應用程式螢幕中使用視圖和控件 在iPhone OS中,UIKit決定了視圖以及控件的行為和預設外觀。您應該盡可能地使用UIKit提供的标準使用者界面元素,并遵循它們的使用建議。這樣做對您最主要的好處有兩點:

  • 使用者已經習慣了标準視圖和控件的外觀和行為。當您使用相似的使用者界面元素時,使用者之前的經驗對于他們學習使用您的應用程式有所幫助。
  • 即使iPhone OS改變了标準視圖或控件的外觀或行為,您的應用程式也能夠繼續工作,并且隻需要少許改動(如果有的話)就能自動更新。

許多控件支援某種程度上的使用者自定義,通常是顔色或内容(比如添加一個文本标簽或一幅圖像)方面。如果您想要開發一個能使使用者沉醉其 中的應用程式,一個好的做法是,您所建立的控件完全不同于預設控件。這是因為您創造了一個獨特的環境,而去探索如何操控這個環境正是使用者在優秀的應用程式 中所期待的體驗。然而,一般來講您應該避免徹底改變标準行為控件的外觀。如果您使用使用者不熟悉的控件執行标準行為,則使用者不得不花時間熟悉如何使用它們, 并且好奇這些控件具有哪些(哪怕隻有一丁點)标準控件不具備的功能。

導航欄,标簽欄,工具欄和狀态欄 狀态欄,導航欄,标簽欄和工具欄在 iPhone應用程式中具有特别定義的外觀和行為的視圖。它們不需要在每個應用程式中都出現(在那些令人驚歎的應用程式中經常是一個也不出現),不過一旦 決定讓它們出現在應用程式中,就一定要正确地使用這些視圖。原因在于使用iPhone OS裝置的使用者都熟悉它們所提供的功能,對它們顯示的資訊和執行的功能類型早已習慣。狀态欄 狀态欄顯示與使用者裝置相關的重要資訊,包括電話信号強度,目前網絡連接配接和電量資訊。圖6-1顯示了一個狀态欄的例子。圖 6-1   一個包含使用者所需的重要資訊的狀态欄

iOS 人機界面指南

盡管一個全屏的應用程式可以隐藏狀态欄,但是您應該仔細考慮這一設計方案。人們總是希望可以看到目前裝置的電量;隐藏這一資訊,會迫使使用者需要退出您的應 用程式才能擷取電量資訊,這可不是一種理想的使用者體驗。例如,照片應用程式以全螢幕視圖顯示相機中的各個照片時,會在幾秒鐘之後漸漸隐去狀态欄,導航欄和 工具欄。這種做法是很恰當的,因為在照片應用程式中,使用者僅僅關注照片的内容,而并不與應用程式進行互動。但是,使用者可以通過輕輕點選螢幕,讓狀态欄,導 航欄和工具欄重新顯示出來。如果您想要不時地在應用程式中隐藏狀态欄,那麼您應該使得使用者能夠通過單擊螢幕重新獲得狀态欄。除非您有非常令人信服的理由, 否則最好避免用自定義的方式來重新顯示狀态欄,因為使用者未必會發現或記住這樣的方式。雖然您難以控制狀态欄的内容,但是您可以定制它的外觀,并在一定程度 上定制它的行為。具體來說,您可以:

  • 設定網絡活動訓示器是否應該可見。如果您的應用程式正在執行的一項網絡操作會持續幾秒鐘以上,則應該 顯示網絡活動訓示器。如果該網絡操作将在幾秒鐘之内完成,則不必顯示網絡活動訓示器,因為它很可能在使用者意識到它的存在之前便消失了。(在您的代碼中,您 可以使用UIApplication的方法networkActivityIndicatorVisible來控制訓示器的可見性。)
  • 指定狀态欄的顔色。您可以選擇灰色(預設的顔色),不透明的黑色或半透明的黑色(也就是α值為0.5的黑色)。圖6-2顯示了這些樣式。(請注意,您應該在Info.plist檔案中設定一個值來指定狀态欄的樣式;更多相關的資訊請參考iPhone應用程式程式設計指南 。)
  • 設定是否應該采用動畫方式顯示狀态欄顔色的改變。(請注意,動畫效果會使舊的狀态欄一直滑出螢幕,最後消失,同時新的狀态欄會滑動到相應的位置上。)

圖 6-2   狀态欄的三種樣式

iOS 人機界面指南

請確定狀态欄的外觀與您的應用程式的其餘部分能夠協調搭配。例如,如果導航欄是不透明的,就要避免使用半透明的狀态欄。 導航欄 導航欄位于應用程式螢幕的上邊緣,在狀态欄之下。導航欄通常會顯示目前視圖的标題,包含導航控件,并在适當的情況下也可以包含作用于視圖内容的控件。在效率型應用程式(詳見 “ 效率型應用程式 ” )中,導航欄非常有用,因為這些應用程式通常會按照層次結構顯示資訊。導航欄有兩種用途:

  • 激活應用程式中不同視圖之間的導航
  • 提供一些控件,用于管理視圖中的條目

圖 6-3 顯示了這兩種用途的示例。 圖 6-3   包含導航控件和内容管理控件的導航欄

iOS 人機界面指南

導航欄的内容 導航欄可以根據目前視圖示題的寬度居中顯示标題,如圖6-4所示。效率型應用程式中的初始視圖應該包含一條導航欄,上面隻需顯示第一個視圖的标題,這是因為使用者還沒有切換到其它位置。 圖 6-4   顯示目前視圖示題的導航欄

iOS 人機界面指南

一旦使用者切換到另一個視圖,導航欄就應該将它的标題更改為新視圖的标題,并且應該提供一個傳回按鈕,标記為先前視圖的标題。例如,圖6-5顯示了“日期和時間”設定中的導航欄,該設定屬于“正常”設定視圖中的一部分。 圖 6-5   包含導航控件的導航欄

iOS 人機界面指南

标準的傳回按鈕為使用者提供了一種傳回到先前螢幕的可靠方式,是以一定不要改變該按鈕的行為。特别地,您應該避免建立多段的傳回按鈕,比如圖6-6中所示的按鈕。 圖 6-6   不推薦多段的傳回按鈕

iOS 人機界面指南

使用多段的傳回按鈕會引起以下列問題:

  • 多段傳回按鈕持續增長的寬度會占用顯示目前視圖示題的空間。
  • 無法表明單獨某一段的標明狀态。
  • 段越多,每一段的可點選區域就越小,這使得使用者很難準确點選到特定的某一段。
  • 當使用者浏覽層次比較深時,無法确定顯示哪些層的内容。

如果您認為沒有多段傳回按鈕的幫助來顯示路徑,使用者可能會感到迷惑,那麼這也就意味着使用者必須浏覽很深的資訊層次才能找到他們所需要 的内容。為了解決這個問題,您應該盡量将資訊層次扁平化。除了傳回按鈕之外,導航欄還可以在标題的右側包含另一個按鈕。如果您不需要顯示傳回按鈕(由于您 的應用程式不支援分層導航),您也可以選擇在标題的左側顯示一個作用于視圖内容的按鈕,比如“編輯”按鈕。圖6-7顯示了這樣的一個例子。 圖 6-7   包含用于管理視圖内容的控件的導航欄

iOS 人機界面指南

要了解如何在您的應用程式中實作導航欄,請參考 “導航控制器” 。 正如您在上述示例中所見,導航欄上的按鈕周圍有一圈帶邊角的框。在iPhone OS中,這種樣式被稱為邊框樣式。導航欄的所有控件都要使用邊框樣式。事實上,即使您在導航欄上放置一個無格式(沒有邊框)的控件,它也會自動轉換為有邊 框的樣式。您可以設計自己的圖示用作導航欄的按鈕,或者您也可以利用iPhone OS提供的預定義按鈕。關于您可以使用的按鈕相關的更多資訊,請參考 “用于工具欄和導航欄的标準按鈕” 。雖然您可以為所有在導航欄中顯示的文本指定字型,但為了可讀性,推薦您使用系統字型。當您使用适當的UIKit程式設計接口建立導航欄時,其标題将自動采用系統字型來顯示。 導航欄的尺寸和顔色 當 裝置的方向由縱向變為橫向時,導航欄的高度也會自動随之改變(您不應該通過程式設計的方式指定它的高度)。裝置處于橫向時,窄一點的導航欄可以為螢幕上的内容 留出更大的空間。您在設計導航欄控件的圖示和設計螢幕上的布局時,一定要将這種高度上的差異計算在内。您可以指定導航欄的顔色和半透明效果,以和您的應用 程式的整體外觀以及其它欄目(即工具欄,标簽欄和狀态欄)一緻。您可以使用自定義顔色或選擇下列标準顔色中的一種:

  • 藍色(預設顔色)
  • 黑色

如果能對您的應用程式的外觀有所幫助,您還可以為導航欄添加半透明效果。當您使用半透明的導航欄時,螢幕會給人感覺具有更大的可視區 域,這在裝置橫向放置時效果非常理想。一定要避免将半透明的導航欄和黑色不透明的狀态欄混合使用(然而半透明的導航欄可以同灰色不透明的狀态欄一起顯 示)。導航欄的外觀要力争與應用程式中的其它欄目的外觀保持一緻。例如,如果您使用半透明的導航欄,就不要将它與不透明的工具欄一起使用。此外,請避免在 同一方向的不同螢幕中改變導航欄的顔色或半透明效果。 工具欄 如果您的應用程式為使用者提供了一系列可在目前上下文中執行 的動作,那麼您可以為使用者提供一個工具欄。工具欄位于螢幕的下邊緣,它包含若幹按鈕,這些按鈕用于執行與目前視圖中的對象相關的動作。工具欄不是用來切換 應用程式的不同模式的。如果您需要這樣做,您應該使用标簽欄而非工具欄(更多資訊請參考 “标簽欄” )。 例如,當使用者在郵件應用程式中檢視消息時,應用程式提供了一個工具欄,除了查收新郵件和撰寫新郵件之外,工具欄中還包含了用于删除,回複和移動消息的項。 通過這樣的方式,使用者即使停留在消息檢視的上下文環境中,也仍然可以使用他們所需的指令來管理他們的電子郵件。圖6-8顯示了這個場景。 圖 6-8   目前上下文下提供功能的工具欄

iOS 人機界面指南

工具欄的内容 工具欄在其寬度範圍内等距離地顯示工具欄上的項。對于工具欄上顯示的項,最好對其數目加以限制,這樣使用者 可以輕松地點選到他們所需的項。我們向您推薦的使用者界面元素的點選區域為44 x 44像素,是以,為使用者提供五個以下的工具欄項是比較合理的。圖6-9中的例子向您展示了一個各項間距适中的工具欄示例。 圖 6-9   間距适當的工具欄

iOS 人機界面指南

圖6-8 和圖6-9中的項都沒有邊框。在iPhone OS中,這種樣式叫做無格式樣式。(關于邊框樣式的例子請參考 圖6-7 。)雖然您既可以在工具欄中使用帶邊框樣式的按鈕,也可以使用無格式按鈕,但是您不要将這兩種樣式在同一工具欄中混合使用。您可以為工具欄按鈕自行設計圖示,或者您也可以充分利用iPhone OS提供的預定義按鈕。(關于可以使用的按鈕的更多資訊,請參考 “用于工具欄和導航欄的标準按鈕” 。)如果您選擇建立自定義的工具欄按鈕,請盡可能保持它們的尺寸相近,以獲得均勻而又不失吸引力的外觀。 工具欄的尺寸和顔色 當 裝置的方向由縱向變為橫向時,工具欄的高度也會自動随之改變(您不應該在程式中指定它的高度)。裝置處于橫向時,窄一點的工具欄可以為螢幕上的内容留出更 大的空間。您在設計工具欄按鈕的圖示和設計螢幕上的布局時,一定要将這種高度上的差異計算在内。您可以指定工具欄的顔色和半透明效果,以和應用程式的整體 外觀以及其它欄目(即導航欄,标簽欄和狀态欄)一緻。您可以使用自定義顔色或選擇下列标準顔色中的一種:

  • 藍色(預設顔色)
  • 黑色

如果能對您的應用程式的外觀有所幫助,您還可以為工具欄添加半透明效果。當您使用半透明的工具欄時,螢幕會給人感覺具有更大的可視區 域,這在裝置橫向放置時效果非常理想。工具欄的外觀要力争與應用程式中的其它欄目的外觀保持一緻。例如,如果您使用半透明的工具欄,就不要将它與不透明的 導航欄一起使用。此外,請避免在同一方向的不同螢幕中改變工具欄的顔色或半透明效果。 标簽欄 如果您的應用程式為同一組 資料提供了不同的視圖,或者與應用程式的整體功能相關的不同子任務,您可能會想要使用标簽欄。标簽欄出現在螢幕的下邊緣。标簽欄使使用者能夠在應用程式的不 同模式或不同視圖之間進行轉換,并且使用者應該能夠從應用程式的任何地方進入這些模式。但是,标簽欄絕不應該被當做工具欄使用,差別在于工具欄上的按鈕是對 目前模式下的元素起作用的(有關工具欄的更多資訊請參考 “工具欄” )。 例如,在iPhone中,iPod使用了播客,藝術家,視訊和播放清單等标簽欄,使得使用者能夠在他們的媒體收藏中選擇他們所關注的部分。另外,時鐘應用程 序也使用了标簽欄,讓使用者通路該程式的四項功能,即“世界時鐘”,“鬧鐘”,“秒表”和“計時器”。圖6-10顯示了在标簽欄中選擇标簽是如何改變時鐘程 序的視圖的。請注意圖6-10中的标簽欄,在時鐘應用程式的不同模式中是如何保持始終可見的。這使得使用者能夠很容易地看到他們正處于哪種模式,并且不論當 前處于哪種模式都能通路時鐘應用程式的所有模式。 圖 6-10   使用标簽欄切換應用程式視圖

iOS 人機界面指南

标簽欄使用标簽顯示圖示和文本,這些标簽的寬度一緻,并且都以黑色為背景。當一個标簽被選中時,它的背景變亮,标簽中的圖像也會高亮顯示。圖6-11顯示了這一場景。 圖 6-11   标簽欄中被選中的标簽

iOS 人機界面指南

注意: 不管裝置的方向如何變化,标簽欄不會改變它的不透明性和高度。

iPhone OS為标簽提供了一系列圖示,比如像圖6-11中“功能”和“書簽”标簽項那樣的圖示。如果您選擇使用這些圖示,請確定對它們的使用符合圖示所表達的意思。關于您可以使用的标簽欄圖示的更多資訊,請參考 “ 用于标簽欄的标準圖示 ” 。 提供附加标簽 如果您的應用程式的标簽欄隻包含五個或五個以下的标簽,那麼iPhone OS可以在标簽欄上等距離地将它們全部顯示出來,如圖6-12所示。 圖 6-12   iPhone OS的标簽欄最多可顯示五個标簽

iOS 人機界面指南

如果您的應用程式的标簽欄包含的标簽數目超過五個,iPhone OS會在标簽欄上顯示四個标簽,并添加一個“更多”标簽,如 圖6-11 所示。使用者點選“更多”标簽後,能夠在一個單獨的螢幕中檢視附加标簽的清單,如圖6-13所示。 圖 6-13   當使用者點選“更多”标簽時顯示附加标簽

iOS 人機界面指南

在“更多”螢幕中同樣能夠包含一個“編輯”按鈕,使用者可以通過點選該按鈕來配置标簽欄,使其顯示使用者最常用的标簽。例如,當使用者在iPod程式的“更多”螢幕上點選“編輯”按鈕後,他們會看到如圖6-14 所示的“配置”螢幕。 圖 6-14   當應用程式具有五個以上的标簽時,使用者可選擇在标簽欄上顯示他們最喜愛的标簽

iOS 人機界面指南

請注意iPod在以上三處(标簽欄,“更多”螢幕和“配置”螢幕)都使用了相同的标簽圖示。這有助于使使用者确定不管該圖示出現在哪裡,它都代表相同的意思。 為标簽欄上的标簽做标記 您 可以在标簽上顯示一種标記,通過這種低調的,不十分顯眼的方式與使用者進行通信。在使用者的任務或上下文環境中可能有些資訊并非不可或缺,但它們對使用者很有幫 助,是以做标記的回報方式就很适合于傳遞這些資訊。通過在一個特定的标簽上做标記,您可以把标記所表達的資訊和您的應用程式中的一種特定模式—甚至是非當 前模式—聯系在一起。圖6-15顯示了一個在标簽上做标記的例子。 圖 6-15   标簽欄上傳達資訊的标記

iOS 人機界面指南

請注意,如果您注冊了蘋果通知推送服務并且使用者允許顯示标記,那麼您也可以在應用程式的主螢幕上顯示标記。請參考 “啟用推送通知” 來詳細了解這些内容是如何實作的。

警告,動作表單和模式視圖 警告,動作表單和模式視圖是視圖的幾種類型,當需要引起使用者的注意,或者需要提供額外的選項或功能時,這些視圖就會出現。圖7-1顯示了這幾種視圖的例子。圖 7-1   動作表單,模式視圖和警告

iOS 人機界面指南

要了解這幾種類型視圖的程式設計實作,請參考“模式視圖控制器”。用法和行為 警告,動作表單和模式視圖都是模式的,這意味着使用者必須通過點選按鈕顯式地關閉它們,然後才可以繼續使用應用程式。雖然有些時候您需要警告使用者潛在的危險動作,或是向他們提供額外的選項,但您一定要避免過度使用這些視圖,這是因為:

  • 所有類型的模式視圖都會中斷使用者的工作流程。
  • 過度頻繁地出現請求确認的視圖很可能會适得其反,它們想要帶給使用者的幫助反而變成了打擾。

特别地,應該盡量少使用警告。如果警告出現得過于頻繁,使用者很可能為使自己免受它們的打擾,不經閱讀就關閉這些警告。警告,動作表單和模式視圖的設計目的在于傳遞不同的資訊:

  • 警告為使用者提供影響他們使用應用程式(或裝置)的重要資訊。 警告通常是不可預料的,因為它們一般會向使用者報告某個問題或目前環境的變化,這可能需要使用者采取相應的行動。
  • 動作表單為使用者提供與他們目前執行的動作相關的額外選項。 當使用者點選一個工具欄按鈕,開始執行一個具有潛在破壞性的動作(比如删除所有最近的通話)或是一個可以以不同的方式完成的動作(比如使用者可以從多個目的地中指定其中一個作為發送動作的目的地)時,他們會期待動作表單的出現。
  • 模式視圖能夠在目前任務的環境下提供更廣泛的功能。 對于那些與使用者的工作流程直接相關的子任務,模式視圖還能夠提供執行這些子任務的方法。

這幾種類型的視圖在外觀和行為上也各不相同,這也強調了它們向使用者傳遞的消息不同。由于使用者已經習慣了這些視圖的外觀和行為,是以您一定要在應用程式中正确地,一緻地使用這些視圖。請閱讀下面的章節來了解更多有關警告,動作表單和模式視圖的資訊。 使用警告 警 告會在應用程式螢幕的中間彈出并浮在應用程式的視圖之上,以具有高可視性的方式向使用者提供關鍵資訊。其特别的外觀強調的是,警告的出現是由于應用程式或設 備中的一些變化,而未必是使用者最近執行的動作所産生的結果。警告應該顯示文本資訊來說明目前的情況,在理想情況下,還應該允許使用者為下面的操作選擇适當的 動作。使用者對于裝置和背景運作的内置應用程式所發出的警告已經習以為常,比如消息應用程式,但是您還是應該少在應用程式中使用這樣的警告。例如,您可能會 使用警告告訴使用者,他們啟動的任務被阻塞了。采用警告顯示這類消息是有道理的,因為告訴使用者問題所在并讓他們來選擇如何處理是非常重要的。您也可以使用警 告讓使用者有機會選擇接受或拒絕一種具有潛在危險的結果。當出現這種情況時,警告應該顯示兩個按鈕:一個用于關閉該警告并執行動作,另一個用于關閉該警告但 不執行動作。通常,應該為關閉警告但不執行動作的按鈕使用“取消”作為标簽。請注意,如果當顯示這樣的警告時,使用者按下Home鍵,那麼除了退出應用程式 之外,其結果應該與點選“取消”按鈕相同:即關閉警告但不執行動作。那些很少出現的警告能夠讓使用者認真地對待它們。是以,一定要盡量減少應用程式中顯示的 警告的數量,要確定每一個警告都提供了關鍵資訊和有用的選項。一般情況下,應該盡量避免建立這些警告:

  • 将正常進行中的任務的最新消息通知使用者。相反,您應該考慮使用進度視圖或活動訓示器,向使用者提供與進度相關的回報資訊(“進度視圖” 和“活動訓示器” 介紹了這些控件)。
  • 請求确認使用者發起的動作。如果要确認使用者發起的動作,即使是删除聯系人這種具有潛在危險性的動作,您應該使用的是動作表單(在下面的“使用動作表單” 中介紹)。
  • 通知使用者令他們無法操作的錯誤或問題。即使有必要使用警告來告訴使用者出現了他們無法修複的關鍵問題,但如果可能的話,更好的做法是将這些資訊融入到使用者界面中。例如,與其在每次連接配接伺服器失敗時都通知使用者,不如在使用者界面上顯示上一次成功連接配接伺服器的時間。

使用動作表單 當使用者通過點選應用程式的工具欄上的按鈕發起了一項任務,動作表單顯示一組與該務相關的可選方案。動作表單适合于:

  • 選 擇完成任務的方法。例如,在照片應用程式中,使用者可以在浏覽單獨的一張照片時點選“發送”按鈕。這時會出現一個動作表單,有三個發送目的地供使用者選擇(還 有一個“取消”按鈕,用于取消發送)。在類似這樣的情況下,顯示動作表單十分有用,因為您可以提供一系列在目前任務環境下有意義的選項,而無需在使用者界面 中為這些選項保留一片固定的區域。
  • 在完成一項具有潛在危險性的任務之前獲得使用者的确認。例如,根據郵件應用程式的設定,當使用者點選 “郵件”工具欄上的“垃圾郵件”按鈕時,會顯示一個動作表單,允許他們選擇繼續進行删除還是取消該動作。當您在類似的情況下顯示動作表單時,要確定使用者了 解他們将要執行的步驟能夠帶來的危險後果,并且您可以提供一些可選的方案。在iPhone OS裝置上,這種類型的互動是非常重要的,因為使用者有時會無意中點選控件。

動作表單總是從應用程式螢幕的底部出現,覆寫應用程式的視圖(如 圖7-1 中 的左圖所示)。然而,與警告不同的是,動作表單的側邊緣固定在螢幕的兩側,增強了它與應用程式和使用者最近動作的聯系。動作表單包含一些按鈕,讓使用者選擇如 何完成他們的任務。您不應該向動作表單中添加消息,因為按鈕标簽—再聯系目前正在執行的任務—應該已經為使用者提供了足夠多的環境資訊,幫助他們了解這些選 項的含義。當使用者點選其中一個按鈕時,動作表單就會消失。由于動作表單為使用者提供動作的選項,是以它一定會提供不止一個按鈕。 使用模式視圖 預設情況下,模式視圖會從螢幕的下邊緣滑出,并且始終覆寫在整個應用程式的螢幕之上(如 圖7-1 中 位于中間的圖檔所示)。由于模式視圖隐藏了目前的應用程式螢幕,是以它使使用者明确感覺到自己進入了一種不同的,臨時的模式,他們可以在這種模式中完成一些 任務。模式視圖可以在适當的情況下顯示文本,并且可以包含執行任務所必需的控件。此外,模式視圖通常會顯示一個用于完成任務并關閉視圖的按鈕,以及一個用 于放棄任務的“取消”按鈕。相比于動作表單,模式視圖支援更廣泛的使用者互動。不像動作表單隻能接受單一的選項,模式視圖支援多重步驟的使用者互動,比如多項 選擇或資訊輸入。當您需要實作一項與應用程式的主功能相關的獨立任務時,請使用模式視圖。有的使用者界面元素無法始終屬于應用程式主使用者界面,模式視圖尤其 适合于需要這種使用者界面元素的多步驟子任務。郵件應用程式中的撰寫郵件視圖就是一個使用模式視圖的好例子。當使用者點選“撰寫郵件”按鈕時,會出現一個模式 視圖,包含填寫位址和消息的文本區,用于輸入的鍵盤,一個“取消”按鈕和一個“發送”按鈕。 設計警告 您可以指定警告中的文本,按鈕的數量和按鈕的内容,但是您不能定制警告本身的寬度,背景外觀以及文本的對齊方式(它是中心對齊的)。 注意: 當您閱讀這些準則時,應該了解以下定義:

  • 标題大寫 指每個單詞都大寫,除了冠詞,并列連詞和四個或更少字母的介詞。
  • 句子大寫 指第一個單詞大寫,其餘的單詞都小寫,除非它們是專有名詞或專有形容詞。

警告的标題(以及可選的消息)應該簡明扼要地說明相關的情況,并且告訴使用者可以做些什麼。理想情況下,您寫的文本應該向使用者提供足夠的背景資訊,使他們明白為什麼會出現警告并決定點選哪個按鈕。 當您撰寫警告标題時 :

  • 請保持标題足夠簡短,如果可能的話,盡量顯示在一行之内。長的警告标題對于人們來說難以快速閱讀,并且可能會導緻警告消息滾動顯示。
  • 避免建立僅包含一個單詞的标題,它無法提供任何有用的資訊,比如“錯誤”或“警告”。
  • 推薦使用句子片段。一個簡短且内容豐富的說明往往比一個完整的句子更容易了解。
  • 不要害怕負面消息。人們能夠了解大部分警告是在告訴他們出現的問題,或是在向他們發出有關危險情況的警告。是以,直接的負面消息遠比拐彎抹角的正面消息要好得多。
  • 盡量不要使用“你”,“你們”或“我”。有時候,直接指明人物對象的文本可能會引起歧義,甚至可能會被了解為一種侮辱。
  • 使用标題式的大寫方式且不要使用結束标點,如果:
    • 标題是一個句子片段
    • 标題由一個非疑問句的單句組成
  • 如果标題由一個疑問句單句組成,請使用句子式的大寫方式和結束問号。在一般情況下,請考慮使用疑問句作為警告的标題,如果這樣可以讓您避免增加一條額外的消息。
  • 如果标題由兩個或更多的句子組成,請使用句子式的大寫方式,并且為每個句子添加适當的結束标點。實際上,很少有必要使用包含兩個句子的警告标題,雖然您可能認為它可以讓您避免一條額外的警告消息。

如果您選擇提供警告消息:

  • 請保持消息足夠簡短,如果可能的話,盡量顯示在1-2行之内。如果消息太長,将需要滾動顯示。
  • 始終使用句子式的大寫方式和适當的結束标點。警告消息應該是一個完整的句子。

避免在您的警告文本避免描述點選哪個按鈕, 比如“點選‘視圖’檢視資訊”。理想情況下,清晰的警告文本和合乎邏輯的按鈕标簽向使用者提供了足夠的資訊來了解目前的情況和他們的選擇。當然,如果您必須提供詳細的指南,請遵循以下原則:

  • 一定要使用單詞“tap”(而不是“touch”,“click”或“choose”)來描述選擇動作.
  • 不要将按鈕标題括在引号之内,但要保留其大寫方式。

一定要測試您的警告在兩個方向上的外觀。 在橫向上,由于警告的高度受到限制,它可能看起來和在縱向時不太一樣。推薦您優化警告文本的長度,以便它在兩個方向上的效果看起來都不錯(避免滾動顯示)。 推薦使用具有兩個按鈕的警告。 通常具有兩個按鈕的警告是最實用的,因為在兩者之間做出選擇對使用者來說是最容易的。顯示隻有單個按鈕的警告并不是一個好主意,因為這樣的警告無法讓使用者控 制目前的局勢;相反,它隻能顯示資訊并提供一個關閉按鈕。與具有兩個按鈕的警告相比,包含三個或以上按鈕的警告明顯更加複雜,因而應該盡量避免使用這樣的 警告。事實上,如果您需要向使用者提供兩種以上的選擇,您應該考慮使用動作表單來代替警告(更多與這種類型的視圖相關的資訊請參考 “使用動作表單” 和 “設計動作表單” )。 适當地使用警告按鈕的顔色。 警告按鈕或是暗色的,或是亮色的。在具有兩個按鈕的警告中,左邊的按鈕總是暗色的,而右邊的按鈕總是亮色的。在具有單個按鈕的警告中,按鈕總是亮色的。

  • 在指出潛在危險動作的雙按鈕警告中,取消動作的按鈕應該位于右邊,而且是亮色的。
  • 在指出人們所期望的安全動作的雙按鈕警告中,取消動作的按鈕應該位于左邊(是以它應該是暗色的)。

注意: “取消”按鈕既可能是亮色的也可能是暗色的,既可能在右邊也可能在左邊,這取決于該選擇是否具有破壞性。一定要在您的代碼中正确識别哪個按鈕是“取消”按鈕。

為警告按鈕提供簡短并合乎邏輯的标題。 最好的标題應該由1-2個單詞組成,并且這些單詞在警告文本的上下文環境中是合理,有意義的。當您為警告按鈕建立标題時,請遵循如下準則:

  • 和所有的按鈕标題一樣,請使用标題式的大寫方式,且不要使用結束标點。
  • 推薦使用動詞和動詞短語,比如與警告文本直接相關的“取消”,“允許”,“回複”和“忽略”。
  • 如果沒有更好的選擇,推薦使用“确定”作為簡單的接受選項。避免使用“是”或“否”。
  • 盡量不要使用“你”,“你們”和“我”。使用這些單詞的按鈕标題往往既容易産生歧義又顯得缺乏尊重。

設計動作表單 您可以選擇動作表單的背景,使其與您的應用程式的外觀是一緻的,您也可以指定按鈕的 數量和按鈕上的内容。與警告不同的是,動作表單不應該顯示文本資訊。這是因為動作表單是作為使用者動作的結果出現的,比如點選“删除”或“發送”按鈕,是以 沒有必要解釋它為什麼出現。動作表單可以有兩種不同背景的外觀。您需要確定動作表單的背景與應用程式的工具欄或導航欄的外觀是一緻的。例如,如果您的應用 程式使用黑色的導航欄和工具欄,則動作表單的背景應該是半透明黑色的。預設情況下,iPhone OS在顯示動作表單時采用标準的藍色背景,這與标準的藍色工具欄和導航欄是一緻的。您的應用程式中的所有動作表單應具有相同的背景顔色,并且應該與導航欄 和工具欄的顔色一緻。一定要将“取消”按鈕顯示在動作表單的底部。這樣能夠促使使用者在看到“取消”選項之前通讀所有的候選項。圖7-2中所示的動作表單具 有預設的背景外觀,而且“取消”按鈕被放置在推薦的位置上。 圖 7-2   一個典型的動作表單

iOS 人機界面指南

如果您需要提供一個按鈕來執行具有潛在破壞性的動作,比如删除使用者購物清單上的所有條目,那麼按鈕的顔色應該采用紅色。這樣的破壞性按鈕一定要顯示在動作表單的頂部,這一點至關重要,原因有兩個:

  • 一個按鈕越是靠近動作表單的頂部,它的可視性就越強。
  • 當使用者想要點選Home按鈕時,有時他們會誤點選裝置螢幕的底部。是以不要将具有破壞性的按鈕放置在動作表單的底部,這樣因使用者的誤操作引發不良後果的可能性就會比較小。

圖 7-3中所示的動作表單具有半透明的黑色背景外觀,而且“取消”按鈕和破壞性按鈕都被放置在了推薦的位置上。 圖 7-3   執行破壞性動作的按鈕應該是紅色的,并且要位于動作表單的頂部

iOS 人機界面指南

您可以在動作表單中顯示多個按鈕,隻要確定每個按鈕都能很容易地與其它按鈕區分開來。圖7-4顯示了一個動作表單,其背景與标準的藍色工具欄相比對,并且除“取消”按鈕之外,它還提供了三個可選的按鈕。 圖 7-4   具有四個按鈕的動作表單

iOS 人機界面指南

設計模式視圖 模式視圖的整體外觀應該與顯示它的應用程式是一緻的。例如,模式視圖通常包含一個導航欄,導航欄具有标題 和用于取消或完成模式視圖任務的按鈕。該導航欄應該與應用程式的導航欄具有相同的背景外觀。模式視圖通常應該顯示一個以某種方式辨別任務的标題。如果合适 的話,您還可以在視圖的其它區域顯示文本,來更充分地描述任務資訊或提供一些指導。例如,消息應用程式在使用者想要撰寫文本消息時提供了一個模式視圖。如圖 7-5所示,該模式視圖顯示了一個導航欄,它與應用程式的導航欄背景相同,标題為“新消息”。 圖 7-5   模式視圖應該與應用程式螢幕保持一緻

iOS 人機界面指南

在模式視圖中,您可以使用完成任務所需的任何控件。例如,您可以在視圖中包含文本域,按鈕和表視圖。您可以根據您的應用程式選擇顯示模式視圖的方式,增強使用者對該視圖所表現的臨時環境轉換的感覺。為了做到這一點,您可以指定以下切換風格中的一種:

  • 垂直 模式視圖從螢幕的下邊緣滑出,視圖關閉時則向下滑動直到消失。(這是預設的切換風格。)
  • 翻轉 目前視圖從右向左水準翻轉來顯示模式視圖。在視覺上,模式視圖看起來好像是目前視圖的背面。當模式視圖關閉時,它會從左向右水準翻轉來顯示先前的視圖。

如果您決定更改應用程式中模式視圖的切換風格,請不要僅僅為了追求多樣化而這樣做。您要意識到使用者會認為這種差異意味着别的含義。是以,最好建立一個具有邏輯性和一緻性的模式,使使用者可以輕松地覺察到并記住,避免使切換風格發生不必要的改變。

表格視圖,文本視圖和Web視圖 表格視圖,文本視圖和web視圖是具有多種功能的界面元素,它們在iPhone應用程式中有着不同的用途。例如,表格視圖可以用來顯示簡短的選項清單,詳細資訊的分組清單或者長的項目索引清單。文本視圖和web視圖相對來說可以不受限制地接受和顯示内容。表格視圖 表格視圖 通過多行單列的表格呈現資料。行可以被分為不同的段或組,每一行可以包含文本,圖像和控件的組合。使用者可以以輕擊或拖動的方式來滾動行或行的分組。圖8-1顯示了不同樣式的表格視圖,它們以不同的方式顯示清單。圖 8-1   使用表格視圖顯示清單的三種方式

iOS 人機界面指南

用法和行為 表格視圖在iPhone應用程式中非常有用,因為無論是資訊量的多少,它們都提供了組織資訊的有效方式。盡 管實用型應用程式也可以小範圍的使用表格視圖,但表格視圖通常在需要處理大量使用者資料的效率型應用程式中最為有用。沉浸式應用程式一般不會使用表格視圖來 顯示資訊,但是它可能會使用表格視圖來顯示簡短的選項清單。表格視圖提供了允許使用者浏覽和操作資訊的内置界面元素。此外,表格視圖還支援:

  • 顯示頁眉和頁腳資訊。您可以在清單中每一段或一組的上方或下方顯示描述文本,也可以在整個清單的上方或下方顯示描述文本。
  • 編輯清單。您可以允許使用者以統一的方式對清單項進行添加,删除或排序等操作。表格視圖還支援對多個清單項的選擇和操作,您可以利用這一點向使用者提供一種能夠同時删除多個清單項的便捷方法。

當使用者選擇一個清單項時,表格視圖應該提供回報資訊。 如果一個清單項可以被選中,則當使用者選擇該 項時,包含該項的行應該暫時高亮顯示,以此向使用者回報已收到使用者的選擇。然後,立即執行動作:要麼顯示一個新的視圖,要麼在這一行顯示一個複選标記來表明 該項已被選中或啟用。在極少數情況下,當與該行中的項相關的附加詳細資訊或控件顯示在同一屏上時,該行可能會繼續高亮顯示。但是,并不鼓勵這樣做,因為要 在螢幕上同時顯示選項清單,被選中的項和相關的詳細資訊或控件,很容易造成布局擁擠,令使用者感到不适。如果選中某一行的結果是導航到新的螢幕上,那麼被選 中的行會在新的螢幕滑動到相應位置之前高亮顯示。當使用者傳回到先前的螢幕時,原來被選中的行會再次高亮顯示一下,提示使用者他們之前的選擇。請注意,您也可 以以動畫的方式展現使用者對清單項的更改。這樣做有利于向使用者提供回報資訊和增強使用者的直接操作體驗。例如,在設定應用程式中,當您關閉自動設定日期和時間 時(在“日期和時間” > “自動設定”中選擇關閉),清單分組會平滑地展開,顯示兩個新的清單項,“時區”以及“設定日期和時間”。 表格視圖應該立即顯示其内容。 如 果表格的内容繁多或者十分複雜,請不要一直等到所有的資料都可用時才顯示它們。相反,應該立即使用文本資料填充螢幕上可見的行,當更複雜的資料(比如圖 像)可用時再顯示它們。這種技術能夠馬上為使用者提供有用的資訊,并且提高了您的應用程式的響應能力。如果您的應用程式要顯示的資料很少發生變化,您可以考 慮在新的資料可用之前顯示那些實際上已經“過期的”資料。這種技術也能夠讓使用者馬上看到有用的資訊,但不推薦那些資料頻繁變化的應用程式也這樣做。在您決 定這樣處理之前,一定要估計資料變化的頻率和使用者對迅速看到新資料的期待程度。如果很難立即顯示有用的資訊,也一定要避免顯示空行,因為這會給使用者造成 “應用程式已經出現問題而終止”的錯誤暗示。相反,表應該在螢幕中心顯示一個旋轉的活動訓示符和一條資訊标簽,比如“加載中...”。如果您可以顯示舊的 資料,您就不必擔心空行的問題,但是您應該在獲得新資料後立即更新螢幕上的資訊。這兩種技術都為使用者提供了回報資訊,讓他們知道應用程式的處理正在進行當 中。 表格視圖樣式 iPhone OS定義了兩種樣式的表格視圖,它們的差別主要在于外觀: 無格式樣式 (UITableViewStylePlain) 這種視圖樣式所顯示的行從螢幕一側的邊緣延伸至另一側的邊緣。行的背景是白色的。每一行可以被分成帶标簽的段,并且可以在視圖的右邊緣垂直地顯示一個可選 的索引。圖8-2顯示了iPod應用程式中的一個無格式樣式的清單(沒有頁眉,頁腳和索引)。 Figure 8-2   一個簡單的無格式樣式的清單

iOS 人機界面指南

分組樣式 (UITableViewStyleGrouped)這種視圖樣式顯示行的分組,每組表格行會相對螢幕兩側縮 進。這些分組顯示在獨特的垂直條紋背景下,而分組内部的背景則是白色的。分組樣式的表格可以包含任意數量的分組,每一個分組可以包含任意數量的行。在每一 組之前可以加入頁眉文本,其後可以加入頁腳文本。這種樣式的表格視圖不提供索引。圖8-3顯示了一個分組樣式的清單,其中每個分組均包含一行。該清單出現 在設定應用程式中,不包含頁眉或頁腳文本。 圖 8-3   一個包含四個分組的,具有分組樣式的清單

iOS 人機界面指南

單元格樣式 iPhone OS 3.0及後續版本中包含了四種預定義的單元格樣式,您可以使用它們快速,友善地為無格式樣式和分組樣式的表格行建立常用的布局。請注意,從程式設計角度而言, 這些樣式是應用在表格視圖的單元格上的,單元格規定了表格應該如何繪制各行。當您使用标準單元格樣式時,您的應用程式的風格會與内置應用程式保持一緻,這 将在以下幾個方面使您獲益:

  • 使用者可以更快地了解您的應用程式如何工作
  • 如果今後标準單元格樣式有所改進,您的應用程式可以輕松地保持一緻,而無需付出大量的額外工作

如果您想要以非标準的方式布置您的表格行,您最好建立一種自定義的單元格樣式,而不是大刀闊斧地修改已有的标準樣式。 iPhone OS表格視圖程式設計指南 中 的“自定義單元格”一節可以幫助您了解如何建立自己的單元格。請注意,在所有的單元格樣式中,文本都會被自動截斷。一般來說,您應該確定您的文本盡可能簡 潔,避免顯示出使用者難以了解的被截斷的單詞或詞組。具體來講,文本截斷是個可大可小的問題,這取決于您使用的單元格樣式和截斷發生的位置。iPhone OS提供下列标準單元格樣式:

  • 預設 單元格樣式(UITableViewCellStyleDefault)包含位于左側的可選圖像,後面緊跟左對齊的黑色文本标簽。圖 8-4   分組表格(左)和無格式表格(右)中的預設單元格樣式
    iOS 人機界面指南
    文本标簽代表一個表格項的名稱或标題,而且其左對齊的格式使得清單很易于浏覽。是以,預設樣式非常适合于顯示不需要根據附加資訊加以區分的表格項清單。最好使用簡短的文本标簽,但是如果文本截斷無法避免,要盡量確定最重要的資訊包含在前幾個單詞中。
  • 副标題 單元格樣式(UITableViewCellStyleSubtitle)包含位于左側的可選圖像,後面緊跟一行左對齊的文本标簽,以及另一行位于文本标簽下方的左對齊的詳細資訊文本标簽。文本标簽采用黑色字型,詳細資訊文本标簽則采用較小的灰色字型。圖 8-5   分組表格(左)和無格式表格(右)中的副标題單元格樣式
    iOS 人機界面指南
    文本标簽代表一個表格項的名稱或标題,而詳細資訊文本标簽則表明它包含與該表格項相關的附加資訊。文本标簽的左對齊格式使得清單很易于浏覽。在清單項看起 來比較相似的情況下,這種單元格樣式很适用,因為使用者可以參考詳細資訊文本标簽中的附加資訊,以便區分文本标簽中列舉的表格項。文本标簽應該盡量簡短,以 避免發生文本截斷。如果文本截斷無法避免,請注意将最重要的資訊放在前幾個單詞中。如果詳細資訊文本标簽發生截斷,使用者則不會太介意,因為他們認為它隻是 用于加強或補充文本标簽中列舉的表格項。
  • value 1 單元格樣式(UITableViewCellStyleValue1)将文本标簽和詳細資訊文本标簽顯示在同一行,文本标簽采用左對齊格式和黑色字型,而詳細資訊文本标簽采用右對齊格式和較小的藍色字型。這種單元格樣式不宜使用圖像。圖 8-6   分組表格(左)和無格式表格(右)中的value 1單元格樣式
    iOS 人機界面指南
    文本标簽代表一個表格項的名稱或标題,而詳細資訊文本标簽提供了與該表格項緊密相關的重要資訊。文本标簽的左對齊格式和字型樣式有助于使用者浏覽他們所需的 項目清單,而詳細資訊文本标簽的右對齊格式可以引起使用者對表格項相關資訊的關注。這種單元格樣式适合于顯示表格項的目前值,而該值可能選自一個子清單。在 這種布局中,可能很難避免文本截斷的發生(因為兩個标簽位于同一行),但是仍值得您努力嘗試。否則,兩組标簽之間沒有留白,使用者很難了解這兩部分資訊之間 的關系。雖然您可以在無格式表格或分組表格中使用 value 1單元格樣式,但是其外觀更适合于分組表格。例如,在設定應用程式的“用法”螢幕中,分組表格使用了value 1樣式:圖 8-7   在分組表格中具有最佳視覺效果的value 1單元格樣式
    iOS 人機界面指南
  • value 2 單元格樣式(UITableViewCellStyleValue2)同樣将文本标簽和詳細資訊文本标簽顯示在同一行,文本标簽采用右對齊格式和較小的藍色字型,而詳細資訊文本标簽采用左對齊格式和較大的黑色字型。這種單元格樣式不宜使用圖像。圖 8-8   分組表格(左)和無格式表格(右)中的value 2單元格樣式
    iOS 人機界面指南
    文本标簽的右對齊格式,受限寬度及其字型樣式意味着它僅起到一标題的作用,左對齊詳細資訊文本标簽則包含更重要的資訊。在這種布局中,标簽是每一行中的相 同位置相向排列的。這樣,就在清單中的文本标簽和詳細資訊文本标簽之間形成了一條清晰的垂直邊緣,有助于使用者一眼就能看到詳細資訊文本标簽的首單詞。如果 您允許文本标簽被截斷,該垂直邊緣的清晰程度則會有所消減,這會造成使用者浏覽詳細資訊文本标簽中的資訊變得更加困難。雖然您可以在無格式表格或分組表格中 使用 value 2單元格樣式,但是其外觀更适合于分組表格。例如,在聯系人應用程式的“資訊”螢幕中,分組表格使用了value 2樣式:圖 8-9   在分組表格中具有最佳視覺效果的value 2單元格樣式
    iOS 人機界面指南

注意: 所有的标準單元格樣式都允許添加表格視圖元素,比如複選标記或展開訓示符。但是一定要注意,添加這些元素會減少單元格中可用于标題和副标題的空間寬度。

您也許能夠通過增加表格行的高度,以支援文本換行,進而避免文本截斷,但這可能會産生一些問題:

  • 您必須以程式設計的方式檢查文本的長度,并判斷是否可能發生文本換行。您必須針對縱向和橫向這兩種情況都作出相應的判斷,因為表格的寬度會對文本換行産生影響。
  • 您應該避免在裝置處于一個方向時顯示換行的文本,而在處于另一個方向時不顯示。
  • 無論表格視圖的樣式如何,可變的行高都會對表格視圖在應用程式中的整體性能産生負面影響。

最後要強調的是,雖然在分組表格中可變的行高是可以接受的,但是它們會使無格式表格顯得混亂不均。 表格視圖元素 iPhone OS包含一些可以擴充表格視圖的 表格視圖元素 。除非特别注明,否則這些元素都隻适用于表格視圖。在您的應用程式中,一定要正确地使用這些元素,因為使用者已經習慣了它們在内置應用程式中的外觀和行為。 注意: 從程式設計角度而言,表格視圖元素是以不同的方式實作的。有些是單元格(控制表格如何繪制各行的對象)的附屬視圖,其他的可能在表格視圖進入編輯模式時顯示。要了解管理這些元素的不同方式,請參考 iPhone OS表格視圖程式設計指南 。

  • 展開訓示符 當這個元素出現時,使用者知道他們可以點選這一行中的任意位置來檢視下一級的資訊,或是與目前清單項相關的選項。當選中一行後會顯示另一個清單時,應使用展開訓示符。不要使用展開訓示符來顯示某個清單項的詳細資訊;這種情況下應使用詳細資訊展開按鈕。
  • 詳細資訊展開按鈕 使用者可以通過點選該元素來檢視某個清單項的詳細資訊。(請注意,您可以在表格視圖之外的其他視圖中使用這個元素,以顯示指定對象的詳細資訊;更多資訊請參考“詳細資訊展開按鈕” )。 在表格視圖中,可以在某一行中使用詳細資訊展開按鈕,來顯示與該清單項相關的詳細資訊。請注意,與展開訓示符不同,詳細資訊展開按鈕所執行的動作可以獨立 于行的選擇動作。例如,在電話收藏夾應用程式中,點選某一行會呼叫在該行位置上顯示的聯系人;而點選該行中的詳細資訊展開按鈕會顯示該聯系人的詳細資訊。
  • 删除按鈕 使用者通過點選該元素可以删除對應的清單項。當使用者用力點選某一行,或者在編輯環境下點選删除控制按鈕時,該元素會出現在清單項的右邊。(該元素的例子請參考圖8-10)。
  • 删除控制按鈕 使用者通過點選該元素可以顯示或隐藏每個清單項的“删除”按鈕。為了向使用者提供更多的回報資訊,當使用者點選這個按鈕時,該按鈕内的減号标志由水準方向變為垂 直方向,并顯示“删除”按鈕。該元素的例子請參考圖8-10。.在支援臨時編輯模式的分組表格中,删除控制按鈕出現在表格視圖外部的左側。例如,您可以在 編輯聯系人應用程式中的個人資訊時看到這種情景。在處于固定編輯模式的分組表格中(比如“股票”和“天氣”應用程式中的分組表格),删除控制按鈕出現在表 格内部的左側。在無格式樣式的表格中,删除控制按鈕總是出現在表格内部的左側,如圖8-10所示。
  • 行插入按鈕 使用者通過點選該元素可以向清單中添加一行。
  • 行排序控件 當該元素出現時,使用者可以拖動一行到清單中的另一位置上。
  • 標明符号 該元素出現在清單項的右側,表明該項目前被選中。

圖 8-10   表格視圖可以顯示“删除”按鈕和删除控制按鈕

iOS 人機界面指南

開關控件 開關控件 呈現給使用者兩種互斥的選項或狀态,比如“是/否”或“開/關”。開關控件每次隻能顯示兩個選項中的一個;使用者滑動該控件可以顯示隐藏的選項或狀态。圖8-11顯示了開關控件的例子。 圖 8-11   表格視圖中的開關控件

iOS 人機界面指南

當您需要向使用者提供兩個簡單的,完全對立的選項時,您可以在分組表格視圖中使用開關控件。由于其中一個選項始終是隐藏的,是以最好在使用者已經知曉這兩個選 項是什麼的情況下才使用開關控件。換句話說,不要讓使用者僅僅為了弄清楚另一個選項是什麼而滑動開關控件。您可以使用開關控件來改變視圖中的其他使用者界面元 素的狀态。根據使用者做出的選擇,可能會有新的清單項出現,或者有清單項消失,或者有的清單項變為有效或無效的狀态。 使用表格視圖實作常用的使用者操作 表格視圖是非常通用的使用者界面元素,因為它們可以通過不同的配置方式來支援不同的使用者操作,比如:

  • 選項清單。 在iPhone OS中沒有類似于菜單或彈出式菜單那樣的多項選擇控件,但是表格視圖能夠以一種簡單的,整潔的方式顯示選項清單,供使用者進行選擇。此外,表格視圖可以提供標明标記圖像,向使用者辨別清單中的哪一項(或哪些項)處于被選中的狀态,如圖8-12 所示。圖 8-12   選項清單中的標明标記
    iOS 人機界面指南
    如果您需要在使用者點選表格視圖中的某行時向使用者顯示選項清單,您可以使用任意一種樣式的表格視圖。但是,如果您需要在使用者點選按鈕或其它位于表格行之外的使用者界面元素時向使用者顯示選項清單,則您應該選用無格式樣式的表格視圖。
  • 導航層次資訊。 表格視圖适用于顯示有層次結構的資訊,也就是說每個節點(即清單項)可以包含它自己的子集,因為其子集可以顯示在一個單獨的清單中。使用者可以很輕松地沿着層次結構中的路徑,從每層清單中選擇一項。展開訓示符表示使用者點選該行中的任意位置都可以在一個新清單中檢視其子集,如圖8-13 所示。圖 8-13   展開訓示符表示下一屏将顯示該行的資訊子集
    iOS 人機界面指南
    如果一個表格視圖用于導航時,當使用者按照層次結構回溯他們浏覽過的内容時,先前被選中過的表格行不再保持高亮顯示。
  • 檢視按概念分組的資訊。 您可以使用任意一種表格視圖樣式,将資訊歸類為不同的邏輯分組,比如工作,家庭或學校。無格式樣式表格和分組樣式表格都允許您通過提供頁眉和頁腳文本來為每一段提供上下文資訊,如圖8-14 所示。圖 8-14   無樣式樣式的表格視圖中通過頁眉來分組
    iOS 人機界面指南
    一般來說,分組樣式表格提供了更清晰的,可視化的分組表示,因為即使在快速滾動的情況下,使用者也很容易認出分組所具有的圓形的四角。 圖8-15 顯示了iPod設定中一些概念相近的分組。圖 8-15   分組樣式表格視圖可以包含多個分組
    iOS 人機界面指南
  • 檢視索引過的資訊。 如果您正在使用無格式樣式的表格視圖,則您可以顯示索引來幫助使用者迅速找到他們需要的東西。索引由一列懸浮于螢幕右邊緣的條目(通常是字母表中的字母)組成,如圖8-16 所示。使用者點選(或拖移至)一條索引項可以看到在清單中與之對應的區域。當清單的長度跨越數個螢幕時索引最為有用。圖 8-16   包含索引的無格式樣式的表格視圖
    iOS 人機界面指南
    如果您在無格式樣式表格中包含了索引,您就應該避免使用那些需要在表格的右邊緣顯示的表格視圖元素(比如展開訓示符),因為這些元素會影響索引的使用。

文本視圖 文本視圖 是一片能夠顯示多行文本的區域,并在内容過長超出其邊界範圍時可以滾動。郵件應用程式就使用了文本視圖讓使用者建立簽名,簽名會出現在使用者所撰寫的每一封郵件的正文末尾處,如圖8-17所示。 圖 8-17   顯示多行文本的文本視圖

iOS 人機界面指南

您不但可以使用文本視圖來顯示多行文本,如一份大文本檔案的内容,而且您還可以使用文本視圖來支援使用者編輯。如果您提供的文本視圖是可編輯的,那麼當使用者 在文本視圖内點選時會自動顯示鍵盤。鍵盤的輸入法和布局取決于使用者的語言設定。當使用者點選“.?123”鍵(如圖8-17所示)時,鍵盤會切換到數字鍵 盤,使得數字和标點符号的輸入更加友善。您也可以指定不同的鍵盤樣式,這取決于您希望使用者所輸入的文本類型。關于可使用的鍵盤樣式請參考 “文本框” 。 您可以在文本視圖中控制文本的字型,顔色和對齊方式,但這些屬性會應用于整個文本。也就是說,您無法隻對部分文本做出上述屬性的改變。正如您所期望的那 樣,預設的字型和顔色采用系統字型和黑色,因為其可讀性最強。預設的對齊屬性為左對齊(您可以将其改為居中對齊或右對齊)。如果您一定要在同一個文本視圖 中使用不同的字型,顔色和對齊方式,您可以使用web視圖代替文本視圖,使用HTML來格式化文本。 Web視圖 Web視圖 是應用程式螢幕上可以顯示豐富的HTML内容的一片區域。例如,郵件應用程式使用web視圖顯示郵件的内容,因為這種視圖可以包含比純文字更豐富的内容(圖8-18顯示了這樣的一個例子)。 圖 8-18   Web視圖可以顯示基于web的内容

iOS 人機界面指南

除了顯示web内容之外,web視圖還提供了一些元素來支援使用者浏覽開放的網頁。雖然您可以選擇向使用者提供網頁浏覽功能,但是最好避免讓您建立的應用程式 看起來像是一個小型web浏覽器。如果您擁有一個網頁或web應用程式,您可以選擇使用web視圖對其進行包裝,實作一個簡單的iPhone應用程式。如 果您打算通路由您操控的web内容,請首先閱讀 Safari Web内容指南 ,確定您已經知道對于iPhone OS裝置,如何建立與之相容并針對其顯示進行過優化的web内容。

應用程式控件 iPhone OS為您提供了若幹控件,您可以在自己的應用程式中使用它們,并且這些控件中的絕大部分已經被iPhone OS裝置的使用者所熟知。這些控件有很多隻能用于特定位置,比如表格視圖,但也有一些控件具備一定的通用性。本章将向您介紹可以在應用程式的任意視圖中使用 的控件。當您設計應用程式的使用者界面時,永遠要牢記一點:對于熟悉的控件,使用者期望它們具有與内置應用程式中一樣的行為。隻要您在應用程式中适當地使用這 些控件,一定會為自己的程式增色不少。活動訓示器 活動訓示器 表示有一項持續時間未知的任務或程序正在進行當中。如果已知一項任務的持續時間,需要顯示該任務的進度,請使用進度視圖(更多關于該控件的資訊請參考“進度視圖” )。 活動訓示器看起來像一個“旋轉的齒輪”,告訴使用者處理正在進行中,但不知何時能夠完成。圖9-1顯示了兩種活動訓示器。狀态欄上的是網絡活動訓示器;如果 您的應用程式通路網絡時超過了一定的秒數,狀态欄就會顯示該訓示符。工具欄上較大一點的活動訓示器在您的應用程式執行目前任務的時間多于1秒或2秒時顯 示。圖 9-1   兩種活動訓示器

iOS 人機界面指南

活動訓示器是一種很好的回報機制,它告訴使用者他們的任務或程序并沒有終止,而不是說明任務何時結束。您可以選擇活動訓示器的大小和顔色來配合它所在的視圖 的背景。預設情況下,活動訓示器是白色的。當任務或程序已經完成時,活動訓示器就會消失。推薦您使用這種預設行為,因為使用者期望在有動作發生時看到活動指 示器,而且他們會将靜止不動的活動訓示器與停滞的程序聯想到一起。要了解如何顯示網絡活動訓示器,請參考UIApplication類參考 中的networkActivityIndicatorVisible方法。要了解如何在您的代碼中顯示一個較大的非網絡活動訓示器,請參考UIActivityIndicatorView類參考 。日期時間選擇器 日期時間選擇器 為 使用者提供了一種簡單的選擇特定日期或時間的方式。日期時間選擇器最多可以有4個獨立的轉輪,每個輪隻顯示一種類型的值,比如月份或小時。使用者通過點選或拖 拽使轉輪轉動,直到它将使用者想要的值顯示在選擇器中間的一條突出顯示的選擇欄上。最終的值由各個輪上的值組合而成。圖9-2顯示了一個日期時間選擇器的例 子。圖 9-2   日期時間選擇器

iOS 人機界面指南

使用日期時間選擇器可以避免使用者輸入由多段組成的值,比如一個日期的年,月,日。日期時間選擇器使用起來很友善,因為每一部分的值都有相對小的範圍,并且 使用者知道這些值應該是多少。日期時間選擇器會根據您指定的不同模式顯示出不同數量的轉輪,每個轉輪都有一組不同的值。日期時間選擇器定義了如下模式:

  • 時間 時間模式下顯示小時和分鐘的轉輪,以及一個指定上午/下午的可選輪。
  • 日期 日期模式下顯示月,日和年的轉輪。
  • 日期和時間 日期和時間模式下顯示月曆日期,小時和分鐘的輪,以及一個指定上午/下午的可選輪。這也是預設的模式。
  • 倒數計時器 倒數計時器模式下顯示小時和分鐘的轉輪。您可以指定倒計時的總時長,最長為23小時59分鐘。

預設情況下,分鐘輪顯示60個值(0到59)。但是,如果您想要比較粗略地顯示時間,您可以設定分鐘輪,使其每隔幾分鐘顯示一個值, 隻要時間間隔的值是60的因數就可以。例如,您可以以一刻鐘為間隔,顯示0,15,30和45。不管如何設定,日期時間選擇器的整體大小是固定的,與鍵盤 的尺寸相同。您可以選擇将日期時間選擇器設為視圖中的焦點元素,或者讓它隻在需要時出現。例如,内置的時鐘應用程式的計時器模式會顯示一個總是可見的日期 時間選擇器,這是因為時間的選擇對“定時器”的功能起至關重要的作用。另一方面,“設定日期和時間”首選項(在您關閉“自動設定”的情況下,可在“設定” > “一般” > “日期和時間”找到該選項)隻顯示臨時的日期時間選擇器,顯示與否取決于使用者是否想要設定日期或時間。要了解更多有關在您的代碼中使用日期時間選擇器的内 容,請參考 UIDatePicker類參考 。 詳細資訊展開按鈕 詳細資訊展開按鈕 提供了關于某一項的額外資訊或更詳細的資訊。通常用于表格視圖中,向使用者提供檢視某個清單項(請參考 “表格視圖元素” 查 看更多關于該用法的資訊)的詳細資訊的方法。然而,您也可以在其他類型的視圖中使用該元素,來提供一種顯示更多資訊或功能的方法。例如,地圖應用程式顯示 了一個詳細資訊展開按鈕,使用者可以點選該按鈕來通路和大頭針所釘位置相關的更多功能。圖9-3顯示了一個詳細資訊展開按鈕的例子。 圖 9-3   顯示額外的詳細資訊或功能的詳細資訊展開按鈕

iOS 人機界面指南

要了解更多有關在您的代碼中使用詳細資訊展開按鈕的内容,請參考 UIButton類參考 。 資訊按鈕 資訊按鈕 提供了一種顯示應用程式配置資訊詳情的方法,它通常位于螢幕的背面。是以,資訊按鈕特别适合于工具應用程式。您可以在天氣應用程式(圖9-4所示)的右下角看到一個資訊按鈕的例子。 圖 9-4   資訊按鈕用于顯示資訊,通常是配置資訊詳情

iOS 人機界面指南

資訊按鈕提供了亮色和暗色兩種背景。亮色背景樣式(如圖9-4所示)在暗色背景的視圖中效果比較好。相反,暗色背景的資訊按鈕在亮色背景的視圖中效果更 佳。資訊按鈕會在使用者點選它時短暫發光。當您使用iPhone OS提供的資訊按鈕時,您将自動獲得這種處于被按下狀态下的外觀。要了解有關在您的代碼中使用資訊按鈕的更多内容,請參考 UIButton類參考 。 标簽 标簽 是一種大小可變的靜态文本。圖9-5顯示了一個标簽的例子。 圖 9-5   為使用者提供資訊的标簽

iOS 人機界面指南

您可以使用标簽為使用者界面的各部分命名,或者向使用者提供一定的幫助資訊。标簽最适合顯示數量相對較少的文本。您可以設定标簽文本的各種屬性,比如字型,文 本顔色和對齊方式,但最重要的是,您要確定您的标簽清晰易讀。不要為了華麗的字型或鮮豔的顔色而犧牲文本的清晰度。當您撰寫标簽的文本時,一定要使用使用者 的詞彙。請檢查您的應用程式中的文本,如果存在以開發人員為中心的詞語,請使用以使用者為中心的詞語替換它們。要了解有關在您的代碼中使用标簽的更多内容, 請參考 UILabel類參考 。 頁訓示符 頁訓示符 為目前在應用程式中 打開的每一個視圖顯示一個小圓點。這些小圓點從左到右的順序表示了視圖被打開的順序(最左邊的小圓點代表第一個視圖)。對于目前螢幕上顯示的視圖,用發光 的小圓點加以表示。使用者點選發光小圓點的左右兩側可以檢視上一個或下一個打開的視圖。圖9-6顯示了一個頁訓示符的例子。 圖 9-6   頁訓示符

iOS 人機界面指南

頁訓示符為使用者提供了一種快捷的方法來檢視目前有多少打開的視圖,同時也能表示出這些視圖被打開的先後順序;它并不能幫助使用者追蹤他們在視圖層次中所處的 位置。因為實用型應用程式中的視圖彼此之間往往是對等的,是以頁訓示符能夠充分幫助使用者在各視圖之間進行導航。另一方面,能夠顯示層次資訊的效率型應用程 序應該通過導航欄(請參考 “導航欄” 獲 取更多資訊)上的元素提供導航資訊。典型情況下,頁訓示符最好出現在應用程式螢幕的下邊緣,位于它所包含的視圖的下方。這樣就可以把螢幕的上面部分留給更 重要的資訊(視圖本身),使使用者很容易看到。一定要確定頁訓示符垂直居中于視圖的下邊緣和螢幕的下邊緣之間。雖然對于在頁訓示符中可以顯示的小圓點的數量 沒有規劃性的限制,但是當頁面越來越多時,訓示點之間不能過于密集。例如,當裝置處于縱向時,您隻能在一個頁訓示符上顯示至多20個小圓點。是以,您應該 在應用程式中避免發生這種情況。雖然您可以在隻有一個打開的視圖時隐藏頁訓示符,但預設的行為是顯示它。要了解有關在您的代碼中使用頁訓示符的更多内容, 請參考 UIPageControl類參考 。 選擇器 選擇器 是日期時間選擇器(關于該控件的更多資訊請參考 “日期時間選擇器” )的通用版本。您可以使用選擇器來顯示任意一組值。與日期時間選擇器一樣,使用者旋轉選擇器的單個或多個轉輪直到出現他們想要的值。圖9-7顯示了一個單輪的選擇器。 圖 9-7   iPhone的Safari中出現的選擇器

iOS 人機界面指南

當您決定是否在應用程式中使用選擇器時,要考慮到當轉輪靜止時,輪上的許多甚至絕大多數數值對使用者來說是隐藏的。但這不一定是個問題,特别是在使用者已知這 些值是多少的情況下。例如,在日期時間選擇器中,使用者了解在月份輪上隐藏的值隻能是1到12之間的數字。然而,如果您要提供的選項不是像這樣的一組衆所周 知的值,那麼使用選擇器控件可能并不合适。如果您需要顯示特别多數量的值,則您應該用表格視圖将這些值列出,而不是用選擇器。這是因為表格視圖具有更高的 高度,能夠更快速地進行滾動。如果您需要為選擇器中的值提供上下文資訊,比如計量機關,請将它顯示在水準地穿過控件中心的半透明選擇欄中。不要在選擇器上 方或轉輪本身上顯示這樣的标簽。有關正确顯示标簽的例子,請參考内置的時鐘應用程式的“定時器”功能,可以看到在使用者選擇的值旁邊顯示了機關“小時”和 “分鐘”。與日期時間選擇器一樣,通用的選擇器可以一直可見(作為您的使用者界面的焦點)或者隻在需要時出現。選擇器的整體大小,包括它的背景,都是固定 的,與鍵盤的尺寸相同。要了解更多有關在您的代碼中使用選擇器的内容,請參考 UIPickerView類參考 。 進度視圖 進度視圖 顯示具有确定持續時間的任務或程序的進度。如果您需要顯示未知持續時間的任務的進度,請使用活動訓示器(關于該控件的更多資訊請參考 “活動訓示器” )。iPhone OS提供了兩種樣式的進度視圖,分别是預設樣式和欄樣式。這兩種樣式的外觀非常相似,差別在于高度不同:

  • 預設樣式用于應用程式的主内容區。
  • 欄樣式比預設樣式薄一些,非常适合在工具欄中使用。例如,在郵件應用程式中,當使用者下載下傳新郵件或發送電子郵件時,工具欄上就會出現欄樣式的進度視圖。

兩種樣式進度視圖的行為是相同的。随着任務或程序的執行,進度視圖會從左到右被填滿。在任意一刻,視圖中已填充和未填充區域的比例都向使用者表明該任務或程序還有多久能夠完成。圖9-8 顯示了一個欄樣式進度欄的例子。 圖 9-8   工具欄上的欄樣式進度視圖

iOS 人機界面指南

進度視圖是那些具有明确持續時間的任務向使用者提供回報資訊的好方法,尤其是在向使用者顯示一項任務大約會執行多久十分重要的情況下。當您顯示進度視圖時,用 戶會得知他們的任務正在執行,并且使用者獲得了足夠的資訊,他們可以決定是否等待任務完成,或者取消該任務。要了解更多有關在您的代碼中使用進度視圖的内 容,請參考 UIProgressView類參考 。 圓角矩形按鈕 圓角矩形按鈕 是一種多功能的按鈕,您可以在視圖中使用它來執行一個動作。您可以在每一個聯系人視圖的底部看到這種按鈕的例子:文本消息和添加到收藏夾按鈕就是圓角矩形按鈕,如圖9-9所示。 圖 9-9   執行應用程式特定動作的圓角矩形按鈕

iOS 人機界面指南

當您為圓角矩形按鈕建立标題時,請務必:

  • 使用标題式的大寫方式(即每個單詞都大寫,但冠詞,并列連詞和五個字母以下的介詞除外)
  • 避免建立過長的标題。長度過長的文本會被截斷,這樣會使使用者很難了解。

要了解更多有關在您的代碼中使用圓角矩形按鈕的内容,請參考 UIButton類參考 。 搜尋欄 搜尋欄是一片接收使用者輸入的文本的區域,您的應用程式可以以搜尋欄中的文本為輸入進行搜尋。當使用者點選搜尋欄時,會出現一個鍵盤;當使用者鍵入要搜尋的條目後,輸入的資訊将按照應用程式指定的方式處理。(關于在應用程式中處理搜尋,請參考 “提供搜尋功能并顯示搜尋結果” 。)預設情況下,搜尋圖示顯示在搜尋欄的左側。此外,搜尋欄還可以顯示一些可選的元素:

  • 占位符文本。該文本可以用來顯示控件的功能(例如“搜尋”),或者用來提醒使用者他們所處的搜尋環境(例如“YouTube”或“Google”)。
  • 書簽按鈕。該按鈕可以提供資訊的快捷方式,使得下一次使用者也能夠輕松地找到這些資訊。例如,通過地圖應用程式搜尋模式中的書簽按鈕,使用者可以通路已儲存在書簽的地點,最近的搜尋和聯系人。
  • 清除按鈕。大多數搜尋欄都包含一個“清除”按鈕,允許使用者通過點選該按鈕清除搜尋欄中的内容。
  • 一個可以被稱作提示的描述性标題,位于搜尋欄的上方。舉例來說,這種提示可以是一個短語,為搜尋欄提供簡要介紹或應用程式特定的環境資訊。

圖9-10顯示了一個包含自定義占位符文本,書簽按鈕和預設搜尋圖示的搜尋欄。 圖 9-10   帶有可選的占位符文本和書簽按鈕的搜尋欄

iOS 人機界面指南

預設情況下,書簽按鈕和清除按鈕會按下列方式對彼此産生影響:

  • 當搜尋欄包含非占位符文本時,清除按鈕是可見的,使用者可以使用它來清除文本。如果搜尋欄中不存在使用者提供的文本或非占位符文本,清除按鈕是隐藏的,因為沒必要清除搜尋欄的内容。
  • 隻有當搜尋欄中不存在使用者提供的文本或非占位符文本時,書簽按鈕才是可見的。這是因為當搜尋欄中存在使用者可能想要清除的文本時,清除按鈕是可見的。

您可以通過指定一種标準顔色的背景樣式來自定義搜尋欄,比如:

  • 藍色(與工具欄和導航欄的預設外觀一緻的預設漸變顔色)。預設的背景樣式如圖9-10所示。
  • 黑色

此外,您可以在搜尋欄的下方顯示一個範圍欄,其中包含一些按鈕,使用者可以點選這些按鈕來選擇搜尋的範圍。範圍欄的外觀與您所指定的搜 索欄外觀相同,并且由您為範圍欄提供自定義的标題。不論裝置的方向如何,範圍欄總是顯示在搜尋欄的下方,除非您在代碼中使用搜尋顯示控制器(詳細資訊請參 考 UISearchDisplayController類參考 )。當您使用搜尋顯示控制器時,範圍欄會顯示在搜尋欄的内部,如果裝置橫向放置,則範圍欄位于搜尋字段的右側(如果裝置縱向放置,則範圍欄位于搜尋欄的下方)。要了解更多有關在您的代碼中使用搜尋欄和範圍欄的内容,請參考 UISearchBar類參考 。 分段控件 分段控件 是處在一條直線上的各段的集合,其中的每一段都相當于一個按鈕,可以顯示不同的視圖。當使用者點選分段控件中的一段時,應該産生一個瞬時的動作或可見的結果。例如,當使用者使用分段控件選擇一種郵件協定時,設定應用程式将顯示不同的資訊,如圖9-11所示。 圖 9-11   分為三個段的分段控件

iOS 人機界面指南

分段控件的長度取決于您所顯示的段的數量以及最長一段的尺寸。分段控件的高度是固定的。雖然您可以指定要顯示的段的數目,但要注意,使用者必須能夠舒服地點 擊到任何一段,而無需擔心觸碰到相鄰的段。由于點選區域應該是44 x 44像素,是以建議将分段控件分為5段或5段以下。分段控件可以包含文本或圖像;每一個單獨的分段要麼包含文本,要麼包含圖像,但不能同時包含兩者。一般 來說,最好避免在同一個分段控件中混合使用文本和圖像。分段控件要保證每一段的寬度與段的總數相稱。這意味着您要確定為每一段設計的内容在尺寸上要大緻相 等。要了解有關在您的代碼中使用分段控件的更多内容,請參考 UISegmentedControl類參考 。 滑塊 滑塊 允許使用者在允許的值的範圍内對一個值或一個過程進行調整。當使用者拖拉滑塊時,相應的值或過程也不斷被更新。圖9-12顯示了一個帶有最小值和最大值的圖像滑塊的例子。 圖 9-12   滑塊

iOS 人機界面指南

滑塊主要在下面兩種情況下很有用:

  • 當您希望使用者能夠對他們選擇的值進行較高精度的控制時
  • 當您希望使用者能夠對目前的過程進行較高精度的控制時

滑塊由軌道,滑塊以及可選的左右兩邊值的圖像組成。圖9-13顯示了滑塊的各個部分。 圖 9-13   滑塊的四部分

iOS 人機界面指南

您可以設定滑塊的寬度,使其适合于您的應用程式的使用者界面。此外,您可以選擇水準地或垂直地顯示滑塊。有以下幾種方法自定義滑塊:

  • 您可以定義滑塊的外觀,以便使用者可以一眼辨認出滑塊是否處于活動狀态。
  • 您可以提供在滑塊兩端出現的圖像(通常,它們分别對應最小值和最大值),以此幫助使用者了解滑塊的作用。例如,控制字型大小的滑塊可以在最小值一端顯示一個非常小的字元,而在最大值一端顯示一個特别大的字元。
  • 您可以根據滑塊所在的位置和控件所處的狀态,為軌道定義不同的外觀。

要了解有關在您的代碼中使用滑塊的更多内容,請參考 UISlider類參考 。 文本框 文本框 是一個接收使用者輸入的圓角矩形的區域。當使用者點選文本框時,會出現一個鍵盤;當使用者點選鍵盤上的Return鍵時,文本框會以應用程式指定的方式處理使用者的輸入資訊。文本框可容納單行的輸入。圖9-14顯示了地圖應用程式中的兩個文本框。 圖 9-14   可接收使用者輸入的文本框

iOS 人機界面指南

您可以使用自定義文本框來幫助使用者在您的應用程式中進行輸入。例如,您可以在文本框的左側或右側顯示自定義的圖像,或者顯示一個系統提供的按鈕,比如圖 9-14中的“書簽”按鈕。在一般情況下,您應該在文本框的左端指明該文本框的用途,而在右端顯示一些附加的功能,比如書簽。您也可以在文本框的右端顯示 清除按鈕。當該按鈕存在時,不論您在它的上面顯示什麼圖像,點選該按鈕都會清除文本框的内容。有時候,如果文本框顯示一些提示資訊,比如“姓名”,則有助 于使用者了解這個文本框的用途。文本框支援顯示占位符文本,它們可以在文本框中沒有其他文本時顯示。要了解與使用文本框,以及自定義顯示圖像和按鈕的文本框 的詳情,請參考 UITextField類參考 。您可以指定不同的鍵盤樣式,來迎合使用者輸入的内容的不同類型。(注意,您不能控制鍵盤的輸入 法和布局,這些是由使用者的語言設定決定的。)例如,你可能希望使用者能夠友善地輸入URL位址,PIN密碼或電話号碼。iPhone OS提供了幾種不同的鍵盤類型,這樣設計是為了友善不同類型的輸入。要了解可供您使用的鍵盤類型,請參考UIKeyboardType。要了解更多有關在 您的應用程式中管理鍵盤的内容,請閱讀 iPhone應用程式程式設計指南 中的“鍵盤管理”一節。

系統提供的按鈕和圖示 為了打造一緻的使用者體驗(也為了讓您的工作更加輕 松),iPhone OS提供了許多用于導航欄和工具欄的标準按鈕,以及用于标簽欄的圖示。本章介紹了可供您使用的标準圖示和按鈕,以及如何正确地使用它們。不論您正在開發哪 種類型的應用程式,您都應該熟悉本章中所介紹的按鈕和圖示,這有助于您:

  • 正确地使用系統提供的元素
  • 避免設計出與系統提供的圖示過于相似的自定義圖示

使用系統提供的按鈕和圖示 在iPhone OS中,許多标準的工具欄和導航欄按鈕,标簽欄上的項以及在内置應用程式中常見的通用按鈕都是可用的。在圖10-1中,您可以在郵件應用程式的工具欄上看到一些标準工具欄按鈕。 圖 10-1 郵件應用程式工具欄上的标準按鈕

iOS 人機界面指南

像圖10-1所示的這幾個按鈕—“重新整理”,“組織”,“删除”,“回複”和“撰寫”,早已被許多内置的應用程式所使用,是以,使用者非常熟悉它們的含義和用 法。這意味着,如果您的應用程式支援這些功能,您就可以利用使用者對它們的熟悉,使得應用程式的使用者界面更加簡潔而高效。反之,這也意味着,如果您将這些按 鈕與其他任務聯系起來,很可能會使使用者覺得迷惑和不适應,因為使用者以為這些按鈕仍具有他們所熟知的功能,但實際上它們會執行另外的功能。除了可以充分利用 使用者以往的使用經驗之外,使用系統提供的按鈕和圖示還能夠帶來另外兩大好處,具體為:

  • 縮短開發時間,這是因為您不需要為标準功能建立自定義的圖形元素。
  • 增強使用者界面的穩定性,即使日後iPhone OS的更新版本改變了标準圖示的外觀也沒有問題。換句話說,您盡可信賴于标準圖示,即使外觀有所變化,它們代表的意思始終保持不變。

值得重申的是,為了利用使用者熟悉的優勢,使用更短的開發時間并保持使用者界面的語義一緻性,您必須恰當地使用這些按鈕和圖示。具體來說,這意味着您應該按照按鈕或圖示規定的含義和推薦位置來使用它們,而不是依靠您對其外觀的臆測。請參考 “用于工具欄和導航欄的标準按鈕” , “用于标簽欄的标準圖示” 和 “用于表格行和其他使用者界面元素的标準按鈕” 等小節,來了解關于系統提供的按鈕和圖示的含義和位置資訊。Interface Builder可以很友善地使用系統提供的按鈕,并将系統提供的圖示應用到您的控件中。您可以參考 Interface Builder使用者指南 中的“iPhone OS使用者界面對象”部分,來了解關于外觀的資訊。如果任何系統提供的工具欄按鈕,導航欄按鈕或标簽欄項目圖示都無法恰當地反映您的應用程式中的某種特定功能,那麼您應該設計自定義的按鈕或圖示。 “導航欄,工具欄和标簽欄的圖示” 小節為您提供了一些指導,能夠幫助您完成這項工作。 用于工具欄和導航欄的标準按鈕 iPhone OS為您準備了在工具欄和導航欄中常見的标準按鈕。 表10-1 所示的這些按鈕具有兩種樣式,分别用于下列不同情況:

  • 邊框樣式—例如,電話聯系人應用程式導航欄中的“添加”按鈕。這種樣式對于導航欄和工具欄都适用。
  • 無格式樣式—例如,郵件應用程式工具欄中的“撰寫”按鈕。這種樣式隻适用于工具欄。事實上,即使您指定一個導航欄中的按鈕為無格式樣式,它也會被轉換為邊框樣式。

如同所有系統提供的按鈕一樣,請不要将表10-1中的按鈕用于其設計用途之外的操作。尤其要避免隻根據外觀選擇按鈕,而不考慮這個按鈕的文檔描述。請參考 “使用系統提供的按鈕和圖示” 一節,這部分内容讨論了正确使用圖示的重要意義。(有關這些按鈕的符号名稱和可用性的資訊請參考UIBarButtonSystemItem的文檔。) 表 10-1 可用于工具欄和導航欄的标準按鈕(以無格式樣式顯示)

按鈕

含義

名稱

iOS 人機界面指南

打開動作表單,允許使用者執行應用程式特定的動作

動作

iOS 人機界面指南

打開動作表單,顯示相機模式下的照片選擇器

相機

iOS 人機界面指南

打開新消息的編輯模式視圖

撰寫

iOS 人機界面指南

顯示應用程式特定的書簽

書簽

iOS 人機界面指南

顯示搜尋框

搜尋

iOS 人機界面指南

建立一個新項

添加

iOS 人機界面指南

删除目前項

資源回收筒

iOS 人機界面指南

在應用程式中将某一項移動或路由至指定目的地,如檔案夾

組織

iOS 人機界面指南

将某一項發送或路由至另一位置

回複

iOS 人機界面指南

停止目前程序或任務

停止

iOS 人機界面指南

重新整理内容(隻在必要時使用;其他情況下自動重新整理)

重新整理

iOS 人機界面指南

開始播放媒體或幻燈片

播放

iOS 人機界面指南

快進目前播放的媒體或幻燈片

快進

iOS 人機界面指南

暫停目前播放的媒體或幻燈片(請注意,這意味着上下文儲存)

暫停

iOS 人機界面指南

快退目前播放的媒體或幻燈片

快退

除了表10-1所示的按鈕之外,在您的應用程式中,您也可以使用表10-2中由系統提供的“編輯”,“取消”,“儲存”和“完成”按鈕,以支援編輯或其他 類型的内容操作。(有關這些按鈕的符号名稱和可用性的資訊請參考介紹UIBarButtonSystemItem的文檔。)這些按鈕對于導航欄和工具欄都 适用,但隻能以有邊框樣式提供給使用者。如果您使用上述按鈕,即使您将其指定為無格式樣式,它也會被轉換為有邊框樣式。 表 10-2 用于導航欄的有邊框樣式的動作按鈕

按鈕

含義

名稱

iOS 人機界面指南

進入編輯或内容操作模式

編輯

iOS 人機界面指南

退出編輯或内容操作模式而不儲存更改

取消

iOS 人機界面指南

儲存更改,并在合适的情況下退出編輯或内容操作模式

儲存

iOS 人機界面指南

退出目前模式并儲存修改(如果有的話)

完成

用于标簽欄的标準圖示 iPhone OS提供了用于标簽欄的标準圖示,如表10-3所示。有關這些圖示的符号名稱和可用性的資訊請參考介紹UITabBarSystemItem的文檔。與所 有的标準按鈕和圖示一樣,您必須根據其規定含義使用這些圖示。尤其要注意,要基于圖示代表的含義來使用圖示,而不是它的外觀。這樣即使圖示的外觀發生改 變,它所代表的特定含義不變,進而使應用程式的使用者界面看起來仍然合理,請參考 “使用系統提供的按鈕和圖示” 一節,進一步了解為什麼正确使用這些圖示如此重要。 表 10-3 用于标簽欄的标準圖示

圖示

含義

名稱

iOS 人機界面指南

顯示應用程式特定的書簽

書簽

iOS 人機界面指南

顯示聯系人

聯系人

iOS 人機界面指南

顯示下載下傳

下載下傳

iOS 人機界面指南

顯示目前使用者的收藏夾

收藏夾

iOS 人機界面指南

顯示應用程式的特色内容

特色

iOS 人機界面指南

顯示使用者操作的曆史

曆史

iOS 人機界面指南

顯示标簽項上的更多項

更多

iOS 人機界面指南

顯示最近一次使用的項

最近一次使用

iOS 人機界面指南

顯示所有使用者最關注的項

最多關注

iOS 人機界面指南

顯示由應用程式定義的一段時間以來使用者通路過的項

最近使用

iOS 人機界面指南

進入搜尋模式

搜尋

iOS 人機界面指南

顯示使用者評級最高的項

最進階

用于表格行和其它使用者界面元素的标準按鈕 iPhone OS提供了少量用于表格行和其他元素的按鈕。表10-4列出了這些按鈕,與所有的标準按鈕和圖示一樣,它們應該按照其含義被正确地使用。特别是要避免隻根據外觀選擇按鈕,而不是這個按鈕的文檔描述。請參考 “使用系統提供的按鈕和圖示” 一節,這部分内容讨論了正确使用這些圖示的重要意義。雖然“詳細資訊展開”按鈕通常在表格行中使用,但它也可以用在别處。有關該按鈕的更多資訊請參考 “詳細資訊展開按鈕” 。iPhone OS還提供了一組隻能在表格行中使用的控件;有關這些控件的具體資訊請參考 “表格視圖元素” 一節。有關這些按鈕的符号名稱和可用性的資訊請參考介紹UIButtonType的文檔。(表格視圖元素“詳細資訊展開”的符号名稱和可用性的資訊請參考介紹UITableViewCellAccessoryDetailDisclosureButton的文檔。) 表 10-4 用于表格行和使用者界面元素的标準按鈕

Button

Meaning

Name

iOS 人機界面指南

顯示聯系人選擇器,向某一項中添加聯系人

添加聯系人

iOS 人機界面指南

顯示一個新視圖,其中包含目前項的詳細資訊

詳細資訊展開

iOS 人機界面指南

翻轉至視圖的背面(通常出現在工具程式中)以顯示配置選項或其他資訊。請注意,“資訊”按鈕也可以是暗色的圓圈當中有一個亮色字母“i”。

資訊

建立自定義圖示和圖像 iPhone應用程式的使用者界面向來以其精美的圖像和豐 富的色彩著稱。作為應用程式的設計者,您需要提供一個美觀的使用者界面以融入這樣的整體風格。雖然iPhone OS提供了大量精美的使用者界面元素,但是每個應用程式仍然需要兩個自定義元素:應用程式圖示和啟動圖像。此外,應用程式還應該為iPhone OS提供用于顯示在Spotlight搜尋結果中的小圖示。有些應用程式需要自定義圖示,用于在導航欄,工具欄和标簽欄中表示應用程式的特定功能和模式。 遵循建立這些圖示的準則,您就可以設計出既與内置圖示相稱,又能巧妙地突顯您應用程式風格的圖示和圖像。注意: 圖示和圖像的标準比特深度是24位(其中,紅色,綠色和藍色各占8比特),外加8位的alpha通道。建議您使用PNG格式,因為它保留了顔色深度,并且 内置支援ɑ通道。您可以使用預覽應用程式産生最終的PNG檔案。您無須将顔色限定在Web安全色内。雖然您可以在為導航欄,工具欄和标簽欄建立的圖示中使 用alpha透明度,但不要在應用程式圖示中這麼做。

應用程式圖示 應用程式圖示 是使用者會放置在其主螢幕上的圖示,點選該圖示可以啟動應用程式。在這裡您可以将品牌宣傳和強烈的視覺效果結合起來,使其簡潔,易辨認且引人注目。使用者可以選擇想要在主螢幕上顯示的應用程式圖示,是以您應該設計一個這樣的圖示:

  • 具有吸引力的,以至于使用者覺得應該将它留在主螢幕上
  • 獨特的,以便使用者可以很容易地在衆多的圖示中找到它

盡量使您的圖示在吸引眼球和表意清晰之間找到平衡點,這樣可以使圖示既豐富,漂亮,又能傳達應用程式的本意。此外,調查一下具有不同 文化背景的人們會對您選擇的圖像和顔色産生哪些不同的了解也是不錯的辦法。當使用者決定在主螢幕上顯示您的應用程式圖示時,iPhone OS會自動為其添加一些視覺效果,以便該圖示與内置圖示保持一緻。具體包括:

  • 圓角
  • 陰影
  • 反光

例如,圖11-1顯示了一個由應用程式提供的簡單圖示。 圖 11-1   一個簡單的應用程式圖示,未顯示在主螢幕之前的樣子

iOS 人機界面指南

圖11-2顯示了同一個圖示被iPhone OS顯示在主螢幕時的樣子。 圖 11-2   一個簡單的應用程式圖示,顯示在主螢幕時的樣子

iOS 人機界面指南

在主螢幕上,具有清晰背景的應用程式圖示看起來效果最佳。這主要是因為iPhone OS添加了圓角效果:統一的圓角效果使使用者主螢幕上的所有圖示都具有一緻的可點選外觀。如果您建立的圖示具有黑色背景,當顯示在主螢幕上時,它的背景會消 失,使用者就無法看到它的圓角效果。這樣的圖示往往讓人覺得是無法點選的,會幹擾到主螢幕的次序結構。為了確定您的圖示可以充分利用iPhone OS所提供的視覺增強功能,建議您建立這樣的PNG格式圖像:

  • 尺寸為57x57像素,90度直角(如果圖像使用了其它尺寸,iPhone OS會對其進行調整)
  • 不要使用光暈或者修飾效果
  • 不要使用alpha透明度

将您的圖示檔案命名為Icon.png,并将它放在應用程式包的頂層。要了解更多與應用程式包的内容相關的資訊,請參考 iPhone應用程式程式設計指南 中的“應用程式包”一節。 注意: 您也可以選擇讓iPhone OS不要為您的圖示添加光暈效果。要做到這一點,您需要在應用程式的Info.plist檔案(要了解該檔案,請閱讀 iPhone應用程式程式設計指南 中的“資訊屬性清單”一節)中添加UIPrerenderedIcon鍵。無論您是否使用光暈效果,您的圖示都應該采用57 x 57像素。

當您送出您的應用程式時,必須包含一個512 x 512像素版本的應用程式圖示,用于在App Store中顯示。雖然,讓使用者一眼就能認出這個版本的圖示就是您的應用程式的圖示非常重要,但這個版本的圖示應該更華麗,更精細。換句話說,您不應該隻 是簡單地放大應用程式圖示,直接作為您為App Store建立的圖示。如果您正在開發一個私下釋出的應用程式(即不通過App Store釋出),您也必須提供一個512 x 512像素版本的應用程式圖示。在這種情況下,将圖示檔案命名為iTunesArtwork(沒有檔案擴充名),并把它放在應用程式包的頂層。這個圖示用 于在iTunes中辨別您的應用程式。 小圖示 每個應用程式都應該提供一個小圖示,當應用程式的名稱與 Spotlight搜尋欄中的詞條相比對時,iPhone OS可以顯示這個小圖示。具有設定功能的應用程式也應該提供這種小圖示,用于在内置的設定應用程式中辨別應用程式。您的小圖示應該能清晰地辨別您的應用程 序,以便使用者可以在搜尋結果清單中明确地識别出來。要做到這一點,您應該建立這樣精簡而吸引人的圖示:

  • 使用PNG格式。
  • 尺寸約為29 x 29像素。

将您的圖示檔案命名為Icon-Small.png,并将它放在應用程式包的頂層。要了解更多與應用程式包的内容相關的資訊,請參考 iPhone應用程式程式設計指南 中的“應用程式包”一節。 注意: 如 果您沒有提供名為Icon-Small.png的圖示,并且您的應用程式包中不包含早期版本的名為Icon-Settings.png的小圖示的話,那麼 iPhone OS會将您的應用程式圖示進行縮放,用于在搜尋結果和設定應用程式中進行顯示。如果您的應用程式包中包含名為Icon-Settings.png的小圖 标,但是不包含名為Icon-Small.png的圖示,那麼iPhone OS會在搜尋結果中顯示設定圖示。不過,您應該更新應用程式包,使其隻包含Icon-Small.png檔案。

啟動圖像 為了增強應用程式啟動時的使用者體驗,您應該提供一個 啟動圖像 。啟動圖像與應用程式的首螢幕看起來非常相似。當使用者在主螢幕上點選您的應用程式圖示時,iPhone OS會立即顯示這個啟動圖像。一旦準備就緒,您的應用程式就會顯示它的首螢幕,來替換掉這個啟動占位圖像。一定要強調的是,之是以提供啟動圖像,是為了改善使用者體驗,并 不 是為了提供:

  • “應用程式進入體驗”,比如啟動動畫
  • “關于”視窗
  • 品牌宣傳元素,除非它們是您應用程式首螢幕的靜态組成部分

由于使用者可能會頻繁,快速地在應用程式之間進行切換,是以,您應該盡一切努力将啟動時間降到最短,而且您設計的啟動圖像應該盡量減輕使用者等待的體驗,而不是吸引使用者的注意力。要做到這一點,您應該設計這樣的PNG格式的圖像:

  • 尺寸為320 x 480像素。其中包含的狀态欄區可以立即顯示您選擇的狀态欄顔色,而不是等到您的應用程式啟動完成後才顯示。
  • 與應用程式的首螢幕相同,除了:
    • 文本。啟動圖像是靜态的,是以您在其中顯示的任何文本都不會本地化。
    • 可能動态改變的使用者界面元素。不要包含在應用程式啟動完成後看上去不同的元素,防止使用者感覺到啟動圖像和應用程式首螢幕之間的閃動。

将您的啟動圖像命名為Default.png,并把它放在您的應用程式包的最頂層。要了解更多與應用程式包的内容相關的資訊,請參考 iPhone應用程式程式設計指南 。 您可能覺得遵循這些準則會導緻啟動圖像顯得平淡無趣,然而,實際上正是這樣。請記住,啟動圖像并不是為您提供機會進行藝術展示;它完全是為了增強使用者對應 用程式能夠快速啟動并立即投入使用的感覺度。下面的例子向您展示了啟動圖像有多麼簡單。第一個例子是内置設定應用程式的啟動圖像,如圖11-3所示。設定 應用程式的啟動圖像隻顯示了應用程式的背景,因為應用程式中的其他内容都無法保證是靜态的。 圖 11-3   設定應用程式的啟動圖像

iOS 人機界面指南

另一個啟動圖像的例子源自内置股票應用程式,如圖11-4所示。請注意,隻有包含在啟動圖像中的圖像才是靜态的圖像,它們在股票應用程式的正面視圖中總是可見的。 圖 11-4   股票應用程式的啟動圖像

iOS 人機界面指南

導航欄,工具欄和标簽欄的圖示 如果可能的話,您應該在導航欄,工具欄和标簽欄中使用系統提供的按鈕和圖示。 iPhone OS提供了各式各樣的标準按鈕和圖示,使用者看到它們就會聯想到内置應用程式所支援的标準任務和模式。如果您的應用程式支援一些标準功能(比如重新整理内容區視 圖或删除一項),或者會顯示不同的資料子集(比如聯系人或書簽),一定要使用系統提供的相應按鈕或圖示來表示它們。關于标準按鈕和圖示的完整清單,以及如 何使用它們的指南,請參考 “系統提供的按鈕和圖示” 。 當然,并不是應用程式所執行的每個任務都是一個标準功能。如果您的應用程式支援一些使用者需要頻繁執行的自定義任務,您需要建立自定義的圖示,用于在工具欄 或導航欄中代表這些任務。同樣,如果您的應用程式顯示了标簽欄,允許使用者在自定義的應用程式模式之間,或者自定義的資料子集之間進行切換,你需要設計自定 義的标簽欄圖示,用于清晰地描述這些模式和子集。本節向您介紹如何設計出能夠很好地用于導航欄,工具欄和标簽欄的圖示。在您為圖示建立美術圖案之前,您需 要花些時間想想該圖示應該傳達些什麼資訊。當您考慮設計的時候,請以這樣的圖示為目标:

  • 簡明扼要。太多的細節會使圖示顯得雜亂或是難以了解。
  • 不會被誤認為是系統提供的圖示。使用者應該能夠一眼就将您的自定義圖示與标準圖示區分開。
  • 易于了解且廣為接受。請盡力建立一個能夠被大多數使用者正确了解,不會令任何使用者反感的符号。

在您确定了圖示的外觀之後,請在建立時遵循以下準則:

  • 使用PNG格式。
  • 使用帶有适當alpha透明度的純白色。
  • 不要添加陰影效果。
  • 使用抗鋸齒效果。
  • 如果您要添加斜邊效果,請確定角度為90°(為了便于了解和操作,您可以想象在圖示的頂部有一處光源)。
  • 對于工具欄和導航欄圖示,尺寸應為20 x 20像素。對于标簽欄圖示,尺寸應為30 x 30像素的圖示。

注意: 您為工具欄,導航欄和标簽欄提供的圖示在您的應用程式中将用做建立圖示的蒙闆。沒必要建立全彩色的圖示。

iPhone OS自動為導航欄,工具欄和标簽欄中的項目提供了被按下或被選中時的外觀,是以您隻需要提供圖示的單個版本。由于這些視覺效果是自動呈現的,您無法改變它們的外觀。

繼續閱讀