鍍金池/ 教程/ iOS/ 應(yīng)用擴(kuò)展
錢(qián)包
iCloud
控件
適應(yīng)性和布局
編輯菜單(Edit Menu)
從概念到產(chǎn)品
啟動(dòng)與停止
3D 觸摸
VoiceOver
Live Photos
HomeKit
臨時(shí)視圖
游戲中心(Game Center)
快速查看(Quick Look)
交互性與反饋
與 iOS 的整合
鍵盤(pán)和輸入頁(yè)面(Keyboards and Input Views)
iAd 富媒體廣告(iAd Rich Media Ads)
術(shù)語(yǔ)和措辭
HealthKit
案例學(xué)習(xí):從桌面到 iOS
導(dǎo)航
撤銷(xiāo)與重做(Undo and Redo)
研究型應(yīng)用程序
社交媒體
蘋(píng)果的移動(dòng)支付平臺(tái)
圖標(biāo)和圖形
iOS 應(yīng)用解析
為 iOS 而設(shè)計(jì)
路線選擇(Routing)
設(shè)計(jì)原則
應(yīng)用內(nèi)購(gòu)買(mǎi)服務(wù)(In-App Purchase)
品牌推廣
動(dòng)畫(huà)
聲音(Sound)
多任務(wù)處理
內(nèi)容視圖
應(yīng)用擴(kuò)展
通知
訪問(wèn)用戶(hù)數(shù)據(jù)(Accessing User Data)
無(wú)線打印 (AirPrint)
模態(tài)情境
顏色與字體

應(yīng)用擴(kuò)展

應(yīng)用擴(kuò)展可以延伸應(yīng)用的使用范圍。當(dāng)用戶(hù)使用其他應(yīng)用時(shí),應(yīng)用擴(kuò)展使得用戶(hù)仍能使用你應(yīng)用的核心功能。舉個(gè)例子,當(dāng)人們?cè)?Safari 中瀏覽網(wǎng)頁(yè)時(shí),他們可以使用你的分享擴(kuò)展來(lái)發(fā)送一張圖片或一篇文章到你的社交網(wǎng)站上?;蛘弋?dāng)使用 Photos(照片)應(yīng)用時(shí),人們可能會(huì)使用你的圖片編輯擴(kuò)展來(lái)為一張圖片加上一個(gè)濾鏡效果。(在這些場(chǎng)景中,Safari 和照片應(yīng)用承載用戶(hù)使用擴(kuò)展的場(chǎng)景,因而被稱(chēng)為宿主應(yīng)用(host apps)。)

你需要提交包含應(yīng)用擴(kuò)展的完整 iOS 應(yīng)用到 App Store(包含擴(kuò)展的應(yīng)用被稱(chēng)為容器應(yīng)用(containing app))。在你的容器應(yīng)用中啟用擴(kuò)展之后,人們就可以在使用其他應(yīng)用時(shí),使用擴(kuò)展來(lái)執(zhí)行快速任務(wù)。例如,在郵件中瀏覽某個(gè)商品時(shí),人們可以不用離開(kāi)郵件應(yīng)用就使用你的動(dòng)作擴(kuò)展來(lái)把商品添加到購(gòu)物清單中。 表 22-1 列舉了可以多個(gè)創(chuàng)建的 iOS 應(yīng)用擴(kuò)展類(lèi)型。

http://wiki.jikexueyuan.com/project/ios-9-human-computer-interface-guidelines/images/82.jpg" alt="" />

以下指南適用于所有類(lèi)型的應(yīng)用擴(kuò)展,針對(duì)特定類(lèi)型應(yīng)用擴(kuò)展的指南請(qǐng)參閱后續(xù)章節(jié)。(如果想了解如何開(kāi)發(fā)、調(diào)試和發(fā)布一個(gè)擴(kuò)展,請(qǐng)參閱 App Extension Programming Guide.)

確保是單任務(wù)。應(yīng)用擴(kuò)展并不是應(yīng)用的精簡(jiǎn)版,它幫助用戶(hù)在有全局目標(biāo)的上下文中完成狹義范圍內(nèi)的有限任務(wù)。例如,動(dòng)作擴(kuò)展可以為用戶(hù)提供一種不同的方式來(lái)查看當(dāng)前內(nèi)容。

保證用戶(hù)的交互是有限和流暢的。好的應(yīng)用擴(kuò)展應(yīng)該只需幾步點(diǎn)擊就可以幫助人們完成任務(wù),這樣他們就能盡快回到之前的場(chǎng)景中。例如,分享擴(kuò)展只需一次點(diǎn)擊即可完成一張圖片的分享。

將容器應(yīng)用及其應(yīng)用擴(kuò)展的名稱(chēng)保持一致。一個(gè)容器應(yīng)用中如果有多個(gè)擴(kuò)展,需要使用不同的名稱(chēng),你需要確保用戶(hù)能夠理解你的擴(kuò)展和應(yīng)用之間的關(guān)系。人們會(huì)在很多不同的情況下遇到擴(kuò)展,如果他們當(dāng)下沒(méi)有認(rèn)出來(lái),那么他們就未必會(huì)信任這些擴(kuò)展。

大部分情況下,復(fù)用容器應(yīng)用的圖標(biāo)。顯示用戶(hù)熟悉的圖標(biāo)是獲得用戶(hù)信任的另一種方式。請(qǐng)注意,對(duì)于動(dòng)作擴(kuò)展來(lái)說(shuō),你應(yīng)該使用單色版本的容器應(yīng)用圖標(biāo)(詳見(jiàn)分享和動(dòng)作擴(kuò)展)。

重要:和設(shè)計(jì)圖標(biāo)和圖形一樣,不要重復(fù)使用 iOS 的圖標(biāo)和圖片,不要為蘋(píng)果的產(chǎn)品和設(shè)計(jì)再設(shè)計(jì)一套圖片。

避免在擴(kuò)展上顯示模態(tài)視圖。很多擴(kuò)展默認(rèn)以模態(tài)視圖來(lái)顯示,所以應(yīng)避免再疊加模態(tài)視圖。盡管有時(shí)候用戶(hù)可能會(huì)在擴(kuò)展上遇到警告框,但是在設(shè)計(jì)擴(kuò)展的流程時(shí),應(yīng)避免出現(xiàn)模態(tài)視圖。

今天部件

人們會(huì)在通知中心的今天區(qū)域中查看今天部件(Today widgets)。因?yàn)槿藗儠?huì)設(shè)置今天區(qū)域以顯示他們最關(guān)注的信息,所以在此進(jìn)行設(shè)計(jì)可以有效幫助你的部件在這些用戶(hù)最重要的信息中占據(jù)一席之地。

http://wiki.jikexueyuan.com/project/ios-9-human-computer-interface-guidelines/images/83.jpg" alt="" />

設(shè)計(jì)與通知中心風(fēng)格一致的外觀。當(dāng)使用通知中心的默認(rèn)邊距和背景時(shí),你的今天部件就會(huì)給用戶(hù)以統(tǒng)一的體驗(yàn)。為獲得最佳的結(jié)果,你應(yīng)該重點(diǎn)關(guān)注你的內(nèi)容而不是背景或者其他的,尤其應(yīng)該避免繪制一片純色背景。

注意:

iOS 會(huì)自動(dòng)在自定義的部件內(nèi)容上方顯示應(yīng)用的圖標(biāo)和標(biāo)題(圖標(biāo)會(huì)顯示在標(biāo)題前面的空白處)。

將部件內(nèi)容與標(biāo)題對(duì)齊。當(dāng)你的部件內(nèi)容與標(biāo)題對(duì)齊時(shí),人們就可以很簡(jiǎn)單地瀏覽今天視圖中他們想要的部件。遵守今天視圖中的邊距規(guī)范,并將內(nèi)容約束在如圖的部件內(nèi)容區(qū)內(nèi)。

http://wiki.jikexueyuan.com/project/ios-9-human-computer-interface-guidelines/images/84.jpg" alt="" />

一般情況下,使用白色的系統(tǒng)字體來(lái)顯示文本。在通知中心默認(rèn)背景下白色文字會(huì)看起來(lái)較好。對(duì)于二級(jí)文本,可以使用系統(tǒng)提供的 vibrant 外觀樣式(查看 notificationCenterVibrancyEffect了解更多)。

提供通知中心式的體驗(yàn)。人們?cè)L問(wèn)通知中心來(lái)獲取簡(jiǎn)要的更新或者執(zhí)行一個(gè)非常簡(jiǎn)單的任務(wù),所以今天部件最好只顯示適量的信息和進(jìn)行有限的互動(dòng),特別是:

  • 避免用戶(hù)在部件中需要滾動(dòng)或縱向移動(dòng)來(lái)查看全部的信息。部件可以通過(guò)縱向擴(kuò)展來(lái)顯示更多的信息,但若部件的高度超過(guò)通知中心的高度就不是一種好的體驗(yàn)了,因?yàn)檫@樣會(huì)干擾其他部件的查看

  • 避免使用橫向掃動(dòng)或拖曳,因?yàn)檫@會(huì)干擾在通知中心進(jìn)行導(dǎo)航

  • 盡可能使用戶(hù)只需一步操作就完成任務(wù)或打開(kāi)你的應(yīng)用(注意,在今天部件中鍵盤(pán)是不可用的)

  • 優(yōu)化性能以便人們可以即刻獲得有用的信息??梢钥紤]在本地緩存信息,以便當(dāng)有更新時(shí)就可顯示最近信息。人們只希望在今天視圖中花很少的時(shí)間,如果部件使用內(nèi)存不當(dāng),iOS 就可能會(huì)終止它

在適當(dāng)情況下,讓人們點(diǎn)擊你的今天部件來(lái)打開(kāi)你的應(yīng)用。因?yàn)榻裉觳考峁┝藢?zhuān)一的體驗(yàn),所以就能有效引導(dǎo)人們?nèi)サ侥愕膽?yīng)用以獲取更多信息或功能。最好不要顯示“打開(kāi)應(yīng)用”按鈕,而是應(yīng)該讓你的整個(gè)今天部件都可被點(diǎn)擊來(lái)打開(kāi)應(yīng)用。你也可以讓用戶(hù)點(diǎn)擊部件中的UI對(duì)象,以打開(kāi)你的應(yīng)用并跳轉(zhuǎn)到關(guān)于此UI對(duì)象的視圖中。舉個(gè)例子,日歷部件顯示了今天的事件,如果用戶(hù)想要獲得某個(gè)事件的更多信息,他們可以點(diǎn)擊部件中的事件來(lái)打開(kāi)日歷應(yīng)用進(jìn)行查看。

注意:

雖然從部件打開(kāi)應(yīng)用的方式對(duì)用戶(hù)來(lái)說(shuō)還不錯(cuò),但繼續(xù)在部件中提供有用且及時(shí)的信息依然是很重要的。人們可不一定會(huì)欣賞一個(gè)功能只是打開(kāi)應(yīng)用的今天部件。

如果可能,在今天部件中讓人們知道他們需要登錄來(lái)獲取有用的信息。如果你的今天不見(jiàn)需要人們登錄查看信息,展示一個(gè)信息去鼓勵(lì)他們登錄和解釋什么樣的內(nèi)容將會(huì)被呈現(xiàn)。例如,如果你的時(shí)間部件即將到來(lái)的預(yù)約是用戶(hù)登錄后展現(xiàn)的,你可能需要讓用戶(hù)“登錄我的應(yīng)用去查看即將到來(lái)的預(yù)約”。

不要制作一個(gè)今天不見(jiàn)需要打開(kāi)除了你自己應(yīng)用外的應(yīng)用。一個(gè)模擬 iOS 主屏的行為的時(shí)間部件不會(huì)為你的用戶(hù)提供有用的功能。

分享和動(dòng)作擴(kuò)展

人們通過(guò)點(diǎn)擊應(yīng)用中的動(dòng)作按鈕(Action button)來(lái)使用分享和動(dòng)作擴(kuò)展。在通過(guò)動(dòng)作按鈕顯示的動(dòng)作視圖控制器(activity view controller)中,動(dòng)作擴(kuò)展被列在底部,分享擴(kuò)展被列在動(dòng)作擴(kuò)展之上。人們可以使用更多(More)按鈕來(lái)管理顯示在動(dòng)作視圖控制器中的分享和動(dòng)作擴(kuò)展。

http://wiki.jikexueyuan.com/project/ios-9-human-computer-interface-guidelines/images/85.jpg" alt="" />

分享或動(dòng)作擴(kuò)展通常被認(rèn)為是在當(dāng)前用戶(hù)場(chǎng)景下用來(lái)輸入內(nèi)容之用。例如,當(dāng)在 Safari 中閱讀一篇文章時(shí),用戶(hù)可能會(huì)點(diǎn)擊動(dòng)作按鈕并使用一個(gè)分享擴(kuò)展來(lái)發(fā)送這篇文章到分享網(wǎng)站上,也可能會(huì)使用一個(gè)動(dòng)作擴(kuò)展來(lái)查看這篇文章的翻譯。

注意:

在動(dòng)作視圖控制器中,iOS 只會(huì)顯示支持當(dāng)前內(nèi)容類(lèi)型的動(dòng)作擴(kuò)展。例如,當(dāng)用戶(hù)當(dāng)前內(nèi)容是視頻時(shí),iOS 就不會(huì)顯示支持文本的動(dòng)作擴(kuò)展。

盡可能在分享擴(kuò)展中使用系統(tǒng)提供的 UI。系統(tǒng)所提供的撰寫(xiě)視圖控制器 (compose view controller) 提供給用戶(hù)一種一致的體驗(yàn),并能自動(dòng)支持一些常用任務(wù),例如預(yù)覽和確認(rèn)標(biāo)準(zhǔn)項(xiàng),同步內(nèi)容,查看動(dòng)畫(huà),以及完成一封郵件。欲知更多關(guān)于使用系統(tǒng)提供的撰寫(xiě)視圖控制器,請(qǐng)參見(jiàn) App Extension Programming Guide 中的 Share.

如果上傳需要一定時(shí)間,那就應(yīng)考慮在分享擴(kuò)展的容器應(yīng)用中顯示上傳進(jìn)度。無(wú)論分享的文件有多大,人們都期待在點(diǎn)擊擴(kuò)展中的發(fā)送或分享按鈕后,能立即返回他們之前的場(chǎng)景。你需要讓進(jìn)度狀態(tài)隨時(shí)更新,但是人們不想每次上傳完畢后都收到通知,并且也無(wú)法自動(dòng)重啟擴(kuò)展。在這種場(chǎng)景下,在容器應(yīng)用中顯示上傳進(jìn)度是一種解決方案,這樣容器應(yīng)用就可以在后臺(tái)處理任務(wù),并在遇到問(wèn)題時(shí)發(fā)送通知。

動(dòng)作擴(kuò)展使用單色的應(yīng)用圖標(biāo)。( 不同的是,分享擴(kuò)展則應(yīng)該使用其容器應(yīng)用的彩色應(yīng)用圖標(biāo)。) 要為動(dòng)作擴(kuò)展設(shè)計(jì)圖標(biāo)時(shí),你可能需要從創(chuàng)建一個(gè)應(yīng)用圖標(biāo)的模版開(kāi)始著手。如有需要,可以專(zhuān)注圖標(biāo)所特有的元素來(lái)進(jìn)行簡(jiǎn)化設(shè)計(jì)。

如果你在容器應(yīng)用中提供了多個(gè)動(dòng)作擴(kuò)展,那么最好為他們?cè)O(shè)計(jì)一套圖標(biāo),且確保這套圖標(biāo)中的每一個(gè)看起來(lái)都與容器應(yīng)用的圖標(biāo)是有關(guān)聯(lián)的。

圖片編輯擴(kuò)展

當(dāng)人們?cè)谡掌?Photos)中查看圖片或視頻時(shí),可以使用圖片編輯擴(kuò)展。一般來(lái)說(shuō),圖片編輯擴(kuò)展能幫助用戶(hù)篩選圖片或進(jìn)行一些其他的圖片或視頻編輯。在用戶(hù)確認(rèn)之后,編輯后的內(nèi)容就會(huì)出現(xiàn)在照片應(yīng)用中。

照片應(yīng)用提供了一個(gè)模態(tài)視圖來(lái)顯示圖片編輯擴(kuò)展的自定義 UI。當(dāng)用戶(hù)在確認(rèn)對(duì)圖片或視頻的編輯時(shí)選擇了取消(你必須要在代碼上保證存在這個(gè)行為),照片應(yīng)用還可以顯示一個(gè)確認(rèn)視圖。

避免在圖片編輯擴(kuò)展中使用導(dǎo)航欄。如圖所示,承載擴(kuò)展的模態(tài)視圖已經(jīng)包含了導(dǎo)航欄,若再增加另一個(gè)導(dǎo)航欄,既會(huì)占據(jù)更多你的界面空間,還會(huì)使用戶(hù)產(chǎn)生困擾。(照片應(yīng)用默認(rèn)會(huì)以全屏高度來(lái)顯示你的視圖,所以你的內(nèi)容會(huì)出現(xiàn)在內(nèi)建的導(dǎo)航欄之下。)

http://wiki.jikexueyuan.com/project/ios-9-human-computer-interface-guidelines/images/86.jpg" alt="" />

如果可以,讓用戶(hù)能夠預(yù)覽編輯結(jié)果。盡可能讓用戶(hù)在關(guān)閉擴(kuò)展返回照片應(yīng)用之前看到他們編輯的成果。

文檔提供者擴(kuò)展

文檔提供者擴(kuò)展幫助人們?cè)谄渌鞣N應(yīng)用中查閱你的應(yīng)用所管理的文檔。在宿主應(yīng)用(host app)中,文檔采集視圖控制器(document picker view controller)會(huì)顯示你的擴(kuò)展所提供的UI(想要了解更多有關(guān)文檔采集視圖控制器的內(nèi)容,請(qǐng)查閱 UIDocumentPickerViewController Class Reference).

注意:

文檔提供者擴(kuò)展由兩個(gè)不同的部分組成:文檔采集視圖控制器擴(kuò)展和文件提供者擴(kuò)展。文檔采集視圖控制器擴(kuò)展包括了你的自定義 UI,文件提供者擴(kuò)展實(shí)現(xiàn)對(duì)文件的訪問(wèn)。為了簡(jiǎn)單起見(jiàn),本節(jié)所使用的術(shù)語(yǔ)文檔提供者擴(kuò)展(Document Provider extension)是為了表述擴(kuò)展中文檔采集視圖控制器部分的 UI 和體驗(yàn)。

避免在文檔提供者擴(kuò)展中使用導(dǎo)航欄。iOS 會(huì)顯示擴(kuò)展的自定義 UI,而自定義 UI 又包含在文檔采集視圖控制器中基于導(dǎo)航欄的界面之中。所以,在內(nèi)建導(dǎo)航欄之下再顯示第二個(gè)導(dǎo)航欄會(huì)使用戶(hù)感到困惑,并且還會(huì)占據(jù)原本你的內(nèi)容區(qū)域。(文檔采集視圖控制器默認(rèn)會(huì)以全屏高度來(lái)顯示你的視圖,所以你的內(nèi)容會(huì)出現(xiàn)在內(nèi)建的導(dǎo)航欄之下。)

http://wiki.jikexueyuan.com/project/ios-9-human-computer-interface-guidelines/images/87.jpg" alt="" />

自定義輸入法

人們?cè)谡麄€(gè)系統(tǒng)中使用帶有自定義輸入法的輸入法擴(kuò)展來(lái)替換 iOS 的自帶輸入法。在啟用輸入法擴(kuò)展之后,除了受保護(hù)的文本區(qū)域(例如密碼輸入?yún)^(qū))和手機(jī)鍵盤(pán)區(qū)(例如聯(lián)系人中的電話號(hào)碼區(qū))外,當(dāng)人們點(diǎn)擊任何文本輸入?yún)^(qū)域后就能使用自定義輸入法。

為用戶(hù)提供明顯的方式來(lái)切換輸入法。人們對(duì)于 iOS 的輸入法切換按鈕很熟悉,他們會(huì)期望在你的輸入法中也有類(lèi)似的體驗(yàn)。

http://wiki.jikexueyuan.com/project/ios-9-human-computer-interface-guidelines/images/88.jpg" alt="" />

如果可能,在你的容器應(yīng)用中包括一個(gè)教程。如果必要,使用你的自定義鍵盤(pán)的容器應(yīng)用去給人們講解如何啟用和使用你的鍵盤(pán)。不要把這個(gè)信息直接放在鍵盤(pán)本身,因?yàn)樗赡茏屓藗儑L試使用這個(gè)鍵盤(pán)時(shí)感到困惑。