大部分的iOS應(yīng)用程序都是使用UIKit中的組件構(gòu)建的。這讓應(yīng)用程序在整個(gè)系統(tǒng)中保持一致的外觀,同時(shí)具有靈活的自定義。
UIKit提供的界面元素分為三大類:
一、欄(Bars)
告知用戶當(dāng)前所在應(yīng)用中的位置转砖,提供導(dǎo)航,還有可能包含按鈕或其他可以用來觸發(fā)功能或交流的元素。
二府蔗、視圖(Views)
包含用戶在應(yīng)用中看到的主要內(nèi)容晋控,如文本,圖形姓赤,動(dòng)畫和交互元素赡译。視圖支持如滾動(dòng)、插入不铆、刪除和排列等行為蝌焚。
三、控制(Controls)
用于觸發(fā)功能及傳遞信息誓斥,像按鈕只洒、開關(guān)、輸入框劳坑、進(jìn)度條等便是極典型的控件毕谴。
1. 按鈕(Buttons)
按鈕執(zhí)行應(yīng)用程序中特定的動(dòng)作,具有可自定義的背景距芬,并可以包括標(biāo)題或圖標(biāo)涝开。系統(tǒng)為大多數(shù)使用情況提供了預(yù)定義的按鈕樣式。你還可以完全設(shè)計(jì)自定義按鈕框仔。
系統(tǒng)按鈕(System Buttons)
系統(tǒng)按鈕經(jīng)常出現(xiàn)在導(dǎo)航欄和工具欄中舀武,但可以在任何地方使用。
在按鈕標(biāo)題中使用動(dòng)詞存和。一個(gè)特定動(dòng)作的標(biāo)題顯示了按鈕是可交互的衷旅,也提示了用戶點(diǎn)擊之后會(huì)發(fā)生什么捐腿。
使用標(biāo)題式大寫。除了冠詞柿顶、并列連詞以及少于4個(gè)字母的介詞外茄袖,標(biāo)題中每個(gè)單詞的首字母均大寫。
保持標(biāo)題簡短嘁锯。過長的文本會(huì)使界面變得擁擠宪祥,并且可能在小屏幕中被截?cái)唷?/p>
考慮在必要時(shí)為按鈕添加邊框或背景。默認(rèn)情況下家乘,系統(tǒng)按鈕沒有邊框或背景蝗羊。然而,在某些內(nèi)容區(qū)域中仁锯,邊框或背景是有必要的耀找,能夠提示其交互性。在“電話”應(yīng)用程序中,數(shù)字按鍵的邊框加強(qiáng)了傳統(tǒng)的打電話模式野芒,并且呼叫按鈕的背景提供了一個(gè)容易點(diǎn)擊的醒目目標(biāo)蓄愁。
詳情展開按鈕(Detail Disclosure Buttons)
詳情展開按鈕通常打開一個(gè)模態(tài)視圖,展示與屏幕上特定項(xiàng)目相關(guān)的更多信息或功能狞悲。雖然你可以在任何類型的視圖中使用它們撮抓,但詳情展開按鈕通常用于訪問有關(guān)特定行的信息。
在表格視圖中適當(dāng)使用詳情展開按鈕摇锋。當(dāng)詳情展開按鈕在表格行中出現(xiàn)時(shí)丹拯,點(diǎn)擊按鈕顯示更多信息。點(diǎn)擊其他區(qū)域選中該行荸恕,或者觸發(fā)應(yīng)用中其它自定義的行為咽笼。如果你希望用戶點(diǎn)擊整行查看更多信息,不要使用詳情展開按鈕戚炫。相反剑刑,使用詳情展開控件,該控件顯示為人字形双肤。
信息按鈕(Info Buttons)
信息按鈕顯示有關(guān)應(yīng)用程序的配置詳情信息施掏,有時(shí)在當(dāng)前視圖的背面,翻轉(zhuǎn)視圖后顯示茅糜。信息按鈕有兩種樣式:亮色和暗色七芭。選擇最適合您應(yīng)用設(shè)計(jì)的風(fēng)格。
添加聯(lián)系人按鈕(Add Contact Buttons)
用戶可以點(diǎn)擊添加聯(lián)系人按鈕來瀏覽現(xiàn)有聯(lián)系人列表蔑赘,并選擇一個(gè)添加到文本輸入框或者其它視圖中狸驳。例如,在郵件應(yīng)用中缩赛,你可以點(diǎn)擊收件人字段中的添加聯(lián)系人按鈕耙箍,從聯(lián)系人列表中選擇收件人。
除了添加聯(lián)系人按鈕之外酥馍,還允許用戶使用鍵盤輸入辩昆。添加聯(lián)系人按鈕為輸入聯(lián)系人信息提供了另一種方式,而不是替代旨袒≈耄可以將其作為添加現(xiàn)有聯(lián)系人的快捷方式,但也應(yīng)允許用戶使用鍵盤輸入聯(lián)系人信息砚尽。
2. 編輯菜單(Edit Menus)
用戶可以在文本輸入框施无、文本視圖、網(wǎng)頁視圖或圖像視圖中觸摸并按住或雙擊一個(gè)元素必孤,以選擇內(nèi)容并顯示編輯選項(xiàng)猾骡,如復(fù)制和粘貼。
為當(dāng)前內(nèi)容顯示合適的命令。默認(rèn)情況下卓练,命令選項(xiàng)包括剪切隘蝎、復(fù)制、粘貼襟企、選擇嘱么、全選和刪除,其中任何一個(gè)都可以選擇禁用顽悼。如果沒有選擇任何內(nèi)容曼振,則菜單不應(yīng)顯示需要選擇的選項(xiàng),如“復(fù)制”或“剪切”蔚龙。
如有必要冰评,調(diào)整編輯選項(xiàng)的位置。默認(rèn)情況下木羹,菜單位于插入點(diǎn)或選區(qū)的上方或下方甲雅,具體取決于可用空間,并包含指向相關(guān)內(nèi)容的指針坑填。雖然無法更改菜單的形狀抛人,但它的位置是可配置的,可以防止它覆蓋界面上的重要內(nèi)容脐瑰。
不要使用與編輯菜單實(shí)現(xiàn)相同功能的其他控件妖枚。提供多種方式會(huì)導(dǎo)致混淆。例如苍在,如果你的應(yīng)用允許用戶使用編輯菜單復(fù)制內(nèi)容绝页,就不要再增加一個(gè)復(fù)制按鈕。
使編輯操作可撤消寂恬。編輯菜單在執(zhí)行操作前不需要確認(rèn)续誉。由于用戶在執(zhí)行操作后可能會(huì)改變主意,因此請務(wù)必支持撤消和重做掠剑。
在系統(tǒng)提供的命令之后顯示自定義命令屈芜。
最小化自定義命令的數(shù)量郊愧。
保持自定義命令名稱短朴译。命令名稱應(yīng)該是動(dòng)詞或簡短的動(dòng)詞短語。使用標(biāo)題式大小寫属铁。
3. 標(biāo)簽(Labels)
標(biāo)簽用來描述屏幕上的界面元素或提供簡短的信息眠寿。雖然用戶無法編輯標(biāo)簽,但有時(shí)可以復(fù)制標(biāo)簽的內(nèi)容焦蘑。標(biāo)簽可以顯示任意數(shù)量的靜態(tài)文本盯拱,但最好保持簡短。
保持標(biāo)簽清晰。標(biāo)簽可以包含純文本或樣式文本狡逢。如果要調(diào)整標(biāo)簽的樣式或使用自定義字體宁舰,請不要犧牲易讀性。最好采用動(dòng)態(tài)類型奢浑,以便在用戶更改設(shè)備上的文本大小時(shí)蛮艰,標(biāo)簽仍然看起來很好。還應(yīng)該測試帶有無障礙功能選項(xiàng)的標(biāo)簽雀彼,如粗體文本壤蚜。
4. 頁面控件(Page Controls)
頁面控件顯示了當(dāng)前頁面在一個(gè)頁面序列中所處的位置。它顯示為一系列小指示點(diǎn)徊哑,實(shí)心點(diǎn)表示當(dāng)前頁面袜刷。
用戶可以點(diǎn)擊頁面控件的前端或后端來訪問下一頁或上一頁,但是無法通過點(diǎn)擊特定的點(diǎn)來訪問特定的頁面莺丑。
不要在分級(jí)頁面中使用頁面控件著蟹。頁面控件不會(huì)顯示頁面是如何關(guān)聯(lián)的。
不要顯示太多頁面梢莽。超過10個(gè)點(diǎn)幾乎難以查看草则,超過20個(gè)打開頁面非常耗時(shí)。如果你的應(yīng)用需要同時(shí)顯示20多頁蟹漓,請考慮使用不同的排列方式(如網(wǎng)格)炕横。
5. 選擇器(Pickers)
選擇器包含一個(gè)或多個(gè)可滾動(dòng)的含有不同值的列表,每一列均具有一個(gè)選中的值以深色的文字呈現(xiàn)葡粒。選擇器通常在用戶編輯字段或點(diǎn)擊菜單時(shí)在屏幕底部或彈出窗口中出現(xiàn)份殿。
選擇器的高度大致是五行列表值的高度。選擇器的寬度取決于設(shè)備和上下文嗽交,可以是屏幕的寬度或封閉的視圖卿嘲。
使用可預(yù)測的和邏輯上有序的值。當(dāng)可滾動(dòng)列表靜止時(shí)夫壁,選擇器中的許多值可能會(huì)被隱藏拾枣。最好能夠預(yù)測這些值是什么,例如一個(gè)按字母順序排列的國家列表盒让。
避免切換屏幕以顯示選擇器梅肤。選擇器應(yīng)在上下文中、或在被編輯的字段的下方或附近邑茄。
對(duì)于大量數(shù)量列表姨蝴,請使用表而不是選擇器。太長的列表可能會(huì)使用困難肺缕。表可以包含索引左医,使?jié)L動(dòng)速度更快授帕。
日期選擇器(Date Pickers)
日期選擇器是用于選擇特定日期、時(shí)間或包含兩者的交互方式浮梢。
日期選擇器有四種模式跛十,每種模式都有一組不同的可選值。
日期秕硝。顯示年偶器、月、日缝裤。
時(shí)間屏轰。顯示小時(shí)、分鐘和AM / PM(可選)憋飞。
日期和時(shí)間霎苗。顯示日期、小時(shí)榛做、分鐘和(可選)AM / PM指定唁盏。
倒計(jì)時(shí)器。顯示小時(shí)和分鐘检眯,最長23小時(shí)59分鐘厘擂。
日期選擇器中顯示的確切值及其順序取決于用戶設(shè)備的區(qū)域設(shè)置。
考慮在指定分鐘時(shí)提供較小的粒度锰瘸。默認(rèn)情況下刽严,分鐘列表包含60個(gè)值(0到59)。你可以選擇增加分鐘間隔避凝。例如舞萄,每小時(shí)四分之一的時(shí)間間隔(0,15,30和45)。
6. 進(jìn)度指示器(Progress Indicators)
不要讓用戶盯著靜態(tài)屏幕等待你的應(yīng)用程序加載內(nèi)容或執(zhí)行冗長的數(shù)據(jù)處理操作管削。使用活動(dòng)指示器和進(jìn)度條讓用戶知道你的應(yīng)用程序沒有停滯倒脓,并讓用戶了解他們將等待多久。
活動(dòng)指示器(Activity Indicators)
活動(dòng)指示器在執(zhí)行不可量化的任務(wù)(如加載或同步復(fù)雜數(shù)據(jù))時(shí)進(jìn)行旋轉(zhuǎn)含思。任務(wù)完成時(shí)消失崎弃。活動(dòng)指標(biāo)是非交互的含潘。
進(jìn)度條要優(yōu)于活動(dòng)指示器饲做。如果活動(dòng)是可量化的,則使用進(jìn)度條而不是活動(dòng)指示器调鬓,用戶可以更好地衡量正在發(fā)生的事情以及需要多長時(shí)間艇炎。
保持活動(dòng)指示器的運(yùn)動(dòng)。用戶會(huì)很自然地把靜止的活動(dòng)指示器和應(yīng)用的停滯聯(lián)系起來腾窝。保持旋轉(zhuǎn)缀踪,讓用戶知道發(fā)生了什么。
如果有幫助虹脯,請用戶在等待任務(wù)完成時(shí)提供有用的信息驴娃。在活動(dòng)指示器上方加上標(biāo)簽以提供額外的上下文信息。避免像“加載”或“驗(yàn)證”這樣的模糊術(shù)語循集。
進(jìn)度條(Progress Bars)
進(jìn)度條包含一個(gè)從左向右填充的軌跡唇敞,用以顯示已知持續(xù)時(shí)間的任務(wù)進(jìn)度。進(jìn)度條是非交互的咒彤,但其通常伴隨著用于取消相應(yīng)操作的按鈕疆柔。
始終保持進(jìn)度條的準(zhǔn)確性。不要顯示不準(zhǔn)確的進(jìn)度信息镶柱。
對(duì)于可量化完成時(shí)間的任務(wù)使用進(jìn)度條旷档。進(jìn)度條非常適合顯示任務(wù)的狀態(tài),尤其是幫助傳達(dá)任務(wù)需要完成的時(shí)間歇拆。
在導(dǎo)航欄和工具欄中隱藏進(jìn)度條軌道的未填充部分鞋屈。默認(rèn)情況下,進(jìn)度條的軌道既包含已填充部分故觅,也包含未填充部分厂庇。在導(dǎo)航欄或工具欄中使用(如表示頁面加載)時(shí),應(yīng)配置一個(gè)進(jìn)度條以隱藏軌道的未填充部分输吏。
考慮自定義進(jìn)度條的外觀以匹配你的應(yīng)用权旷。可以指定軌道和填充的自定義顏色或圖像。
網(wǎng)絡(luò)活動(dòng)指示器(Network Activity Indicators)
在除iPhone X之外的所有設(shè)備上贯溅,當(dāng)網(wǎng)絡(luò)進(jìn)行加載時(shí)炼杖,網(wǎng)絡(luò)活動(dòng)指示器會(huì)在屏幕頂部的狀態(tài)欄中旋轉(zhuǎn)。網(wǎng)絡(luò)連接完成后盗迟,它會(huì)消失坤邪。這個(gè)指示器看起來就像一個(gè)活動(dòng)指示器,并且是非交互的罚缕。
僅當(dāng)網(wǎng)絡(luò)加載持續(xù)超過幾秒鐘時(shí)才顯示此指示器艇纺。不要對(duì)于加載比較快的網(wǎng)絡(luò)任務(wù)顯示指示器,因?yàn)樗赡軙?huì)在任何人注意到它的存在之前就消失了邮弹。
7. 刷新控件(Refresh Content Controls)
手動(dòng)啟動(dòng)刷新控件可以立即重新加載內(nèi)容黔衡,無需等待下一次自動(dòng)內(nèi)容更新的發(fā)生。刷新控件是一種特定類型的活動(dòng)指示器腌乡,默認(rèn)情況下處于隱藏狀態(tài)盟劫,只在重新加載視圖時(shí)變?yōu)榭梢姟@缬肱Γ卩]箱應(yīng)用中侣签,向下拖動(dòng)收件箱郵件列表以檢查新郵件塘装。
執(zhí)行自動(dòng)內(nèi)容更新。雖然用戶能夠立即觸發(fā)內(nèi)容刷新影所,但他們也期望定期進(jìn)行自動(dòng)刷新蹦肴。不要讓用戶負(fù)責(zé)每一次更新,通過定期更新以保持?jǐn)?shù)據(jù)的時(shí)效性猴娩。
僅在有意義時(shí)提供一個(gè)簡短的標(biāo)題阴幌。刷新控件包含可選的標(biāo)題。在大多數(shù)情況下卷中,這是不必要的矛双,因?yàn)榭丶膭?dòng)畫表明內(nèi)容正在加載。不要用它來解釋如何執(zhí)行刷新蟆豫∫楹觯可以提供有關(guān)正在刷新的內(nèi)容的有用信息。例如无埃,播客中的刷新控件使用標(biāo)題來告訴用戶最后一次的更新時(shí)間徙瓶。
8. 分段控件(Segmented Controls)
分段控件是一個(gè)由兩個(gè)或多個(gè)片段組成的線性集合,每一個(gè)片段均為互斥按鈕嫉称。在控件中侦镇,所有片段的寬度相等。像按鈕一樣织阅,片段可以包含文本或圖像壳繁。分段控件通常用于顯示不同的視圖。例如荔棉,在地圖中闹炉,分段控件讓用戶在地圖、傳輸和衛(wèi)星視圖之間切換润樱。
限制片段的數(shù)量以提高可用性渣触。更寬的片段更容易點(diǎn)擊。在iPhone上壹若,分段控件應(yīng)該有五個(gè)或更少的分段嗅钻。
避免在分段控件中混合文本和圖像。盡管單個(gè)片段可以包含文本或圖像店展,但將兩者混合在一個(gè)控件中可能會(huì)導(dǎo)致一個(gè)混淆的界面养篓。
9. 滑動(dòng)條(Sliders)
滑動(dòng)條是一個(gè)水平的控件,用戶可以用手指在滑動(dòng)條的最小與最大值之間滑動(dòng)赂蕴。當(dāng)滑塊的值發(fā)生變化時(shí)柳弄,最小值和滑塊之間的軌跡部分將填充顏色「潘担滑塊可以有選擇地顯示左右圖標(biāo)碧注,以說明最小值和最大值的含義嚣伐。
在有必要的前提下可以自定義滑動(dòng)條的外觀。可以調(diào)整滑動(dòng)條的外觀应闯,包括軌跡顏色纤控、滑塊圖像和左右圖標(biāo))挂捻。
10. 步進(jìn)器(Steppers)
步進(jìn)器是用于增加或減少增量值的兩段式控制器碉纺。默認(rèn)情況下,步進(jìn)器的一段顯示一個(gè)加號(hào)刻撒,另一段顯示一個(gè)減號(hào)骨田。如果需要,這些符號(hào)也可以用自定義圖像替換声怔。
讓步進(jìn)器影響的值更明顯态贤。步進(jìn)器本身不顯示任何值,請確保用戶知道使用步進(jìn)器時(shí)更改哪個(gè)值醋火。
當(dāng)可能發(fā)生較大的值更改時(shí)悠汽,不要使用步進(jìn)器。對(duì)于需要幾次點(diǎn)擊的小改動(dòng)芥驳,步進(jìn)器可以很好地工作柿冲。例如,在打印屏幕上兆旬,使用步進(jìn)器設(shè)置打印份數(shù)是有意義的假抄,因?yàn)槿藗兒苌俑拇嗽O(shè)置。
11. 開關(guān)(Switches)
開關(guān)用于在兩個(gè)互斥的狀態(tài)之間進(jìn)行開啟和關(guān)閉的切換丽猬。
考慮調(diào)整開關(guān)的外觀以符合應(yīng)用的風(fēng)格宿饱。
僅在表格行中使用開關(guān)。如果需要在工具欄或?qū)Ш綑谥袑?shí)現(xiàn)類似功能脚祟,請改用按鈕谬以,并提供兩個(gè)不同的圖標(biāo)來顯示不同的狀態(tài)。
避免添加標(biāo)簽來描述開關(guān)的值由桌。開關(guān)的狀態(tài)要么是開要么是關(guān)为黎。描述的標(biāo)簽是多余的,使界面變得混亂沥寥。
考慮使用開關(guān)來管理互有關(guān)聯(lián)的界面元素碍舍。開關(guān)通常會(huì)影響屏幕上的其他內(nèi)容。例如邑雅,在設(shè)置> Wi-Fi中禁用Wi-Fi開關(guān)會(huì)導(dǎo)致可用的網(wǎng)絡(luò)和其他選項(xiàng)消失片橡。
12. 文件輸入框(Text Fields)
文本輸入框通常為單行且固定高度的區(qū)域,經(jīng)常為圓角淮野,當(dāng)用戶點(diǎn)擊時(shí)會(huì)自動(dòng)彈出鍵盤捧书。使用文本輸入框來請求少量信息吹泡,例如電子郵件地址。
在文本輸入框中顯示必要的提示信息经瓷。文本輸入框可以包含占位符文本爆哑,如“電子郵件”或“密碼”。占位符文本足夠時(shí)舆吮,不必再使用單獨(dú)的標(biāo)簽來描述文本輸入框。
適當(dāng)在文本輸入框的右端顯示清除按鈕色冀。
適當(dāng)使用安全類型的文本輸入框。當(dāng)應(yīng)用程序詢問敏感數(shù)據(jù)(如密碼)時(shí)屯换,請使用安全類型的文本輸入框。
使用圖像和按鈕增加文本輸入框的清晰性和功能性与学。通常彤悔,使用文本輸入框的左端來表示輸入框的用途索守,右端用于顯示附加功能(如書簽)。
提示:對(duì)于多行或多文本輸入蕾盯,請改為使用文本視圖幕屹。
鍵盤(Keyboards)
顯示合適的鍵盤類型。iOS提供了幾種不同的鍵盤類型望拖,每種類型都被設(shè)計(jì)為便于不同類型的輸入挫鸽。例如丢郊,如果應(yīng)用程序要求輸入電子郵件地址,則應(yīng)顯示電子郵件地址鍵盤枫匾。