彈出框
彈出框是當(dāng)人們點(diǎn)擊一個(gè)控件或屏幕上一個(gè)區(qū)域時(shí)顯示的一個(gè)臨時(shí)的界面讲仰。
API NOTE
在iOS 8及以后的系統(tǒng)中楞慈,你可以使用UIPopoverPresentationController來(lái)顯示一個(gè)彈出框。
UIPopoverPresentationController
定義了一個(gè)協(xié)議來(lái)讓你調(diào)整你的彈出內(nèi)容的顯示風(fēng)格去適應(yīng)當(dāng)前的顯示環(huán)境合陵。比如說(shuō)潭兽,在水平常規(guī)環(huán)境下,你的內(nèi)容可以在彈出框中顯示;在水平緊湊環(huán)境下脆炎,你的內(nèi)容可以在一個(gè)全屏的模態(tài)視圖中顯示梅猿。
一個(gè)彈出框:
- 是一個(gè)自包含的模態(tài)視圖
- 在水平常規(guī)環(huán)境下,顯示一個(gè)箭頭指向它出現(xiàn)的點(diǎn)
- 有半透明的背景顯示背后的模糊內(nèi)容
- 可以包含大范圍的對(duì)象和視圖秒裕,比如:
列表袱蚓、圖片、地圖几蜻、文本喇潘、網(wǎng)頁(yè)或自定義的視圖
導(dǎo)航欄、工具欄或標(biāo)簽欄
與當(dāng)前app視圖中的對(duì)象交互的控件或?qū)ο?/p>
(默認(rèn)情況下梭稚,彈出框中的列表視圖颖低、導(dǎo)航欄和工具欄使用半透明的背景來(lái)讓彈出框的模糊層顯出。)
在水平常規(guī)環(huán)境下弧烤,操作表單總是在彈出框中顯示的忱屑。
使用彈出框來(lái)顯示額外的信息或者一系列與關(guān)注的或者選中的對(duì)象有關(guān)的元素。
NOTE
本指南包含顯示在水平常規(guī)環(huán)境下的彈出框的UI和用戶體驗(yàn)暇昂。如果你在全屏顯示的水平緊湊環(huán)境下顯示彈出框莺戒,查看Modal View來(lái)獲取其他全屏模態(tài)視圖的指南。
不要提供“消除彈出框”的按鈕话浇。當(dāng)彈出框的顯示已經(jīng)不必要的時(shí)候它應(yīng)該自動(dòng)關(guān)閉脏毯。考慮下面的情節(jié)來(lái)確定何時(shí)彈出框是不必要的:
一般來(lái)說(shuō)幔崖,當(dāng)人們點(diǎn)擊彈出框以外的區(qū)域時(shí)保存用戶的工作食店。不是所有彈出框都要求明確的退出,所以人們可能錯(cuò)誤地關(guān)閉了它赏寇。只在人們點(diǎn)擊取消按鈕時(shí)拋棄人們做的工作吉嫩。
讓彈出框的按鈕盡可能直接指向顯示它的元素。這樣做有助于人們記住彈出框的來(lái)源以及有關(guān)的任務(wù)或?qū)ο蟆?/p>
確保人們可以在看不到其背后的app內(nèi)容的情況下使用彈出框嗅定。彈出框會(huì)模糊其背后的內(nèi)容自娩,并且人們無(wú)法拖拽彈出框到別的位置。
確保同一時(shí)間只有一個(gè)彈出框在屏幕上渠退。你不應(yīng)該在同一時(shí)間顯示超過(guò)一個(gè)彈出框(或者自定義的外觀和行為類似彈出框的視圖)忙迁。特別是,你不應(yīng)該同時(shí)顯示一個(gè)談出啊匡從另一個(gè)中出現(xiàn)的串聯(lián)或?qū)蛹?jí)的彈出框碎乃。
不要在彈出框的頂部顯示模態(tài)視圖姊扔。除了警告框,都不應(yīng)該顯示在彈出框的頂部梅誓。
可能的話恰梢,允許人們通過(guò)一次點(diǎn)擊關(guān)閉一個(gè)彈出框并打開(kāi)一個(gè)新的彈出框佛南。這個(gè)行為會(huì)在有多個(gè)不同的打開(kāi)彈出框的欄按鈕時(shí)很合適,因?yàn)檫@讓人們避免了很多額外的點(diǎn)擊嵌言。
不要使用太大的彈出框嗅回。彈出框不應(yīng)該占據(jù)全部的屏幕。它應(yīng)該剛好能顯示它的內(nèi)容并且能指向它出現(xiàn)的地方摧茴。彈出框的高度不是固定的绵载,所以你可以使用它來(lái)顯示一長(zhǎng)列的清單。不過(guò)一般來(lái)說(shuō)苛白,你應(yīng)該嘗試避免在彈出框中滾動(dòng)來(lái)完成任務(wù)尘分。注意系統(tǒng)可能調(diào)整彈出框的高度和寬度來(lái)讓它適應(yīng)屏幕。
在彈出框內(nèi)使用標(biāo)準(zhǔn)UI控件和視圖丸氛。一般來(lái)說(shuō),彈出框使用標(biāo)準(zhǔn)控件和視圖的時(shí)候會(huì)看起來(lái)更好著摔、更易于用戶理解缓窜。
確保自定義的彈出框看起來(lái)像一個(gè)彈出框。即使通過(guò)使用UIPopoverBackgroundView API可以很容易地自定義彈出框的很多視覺(jué)部分谍咆,不要?jiǎng)?chuàng)建一個(gè)用戶認(rèn)識(shí)不到是彈出框的設(shè)計(jì)禾锤。如果你改變太多彈出框的外觀,用戶就不能依賴他們以前的經(jīng)驗(yàn)來(lái)幫助他們理解如何在你的app中使用它摹察。
當(dāng)彈出框依然可見(jiàn)時(shí)改變其尺寸要謹(jǐn)慎恩掷。你可能在使用它顯示同樣信息的最小視圖和擴(kuò)展視圖時(shí)想要改變彈出框的尺寸。當(dāng)你調(diào)整可見(jiàn)的彈出框的尺寸時(shí)供嚎,使用動(dòng)畫(huà)來(lái)表示改動(dòng)通常是個(gè)好主意黄娘,因?yàn)檫@不會(huì)給人們一種新彈出框代替了舊彈出框的印象。