操作欄和欄上按鈕(Bars & Bar Buttons)
iOS 7中,狀態(tài)欄是透明的,其他的操作欄(導(dǎo)航欄、tab欄、工具欄、搜索欄、搜索欄下面的范圍選擇欄)是半透明的。通常情況下,你希望能看到操作欄背后是你的內(nèi)容。
大多數(shù)操作欄會(huì)將遮蔽住的內(nèi)容進(jìn)行模糊處理,除非你提供一張自定義背景圖。
為了標(biāo)識(shí)操作欄的位置,iOS 7引入了barPosition屬性,它可以幫助你指定什么時(shí)候自定義背景圖片需要平鋪在狀態(tài)欄上。值UIBarPositionTopAttached表明操作欄貼近屏幕頂部,背景向上延伸入系統(tǒng)狀態(tài)欄區(qū)域。相對(duì)的,值UIBarPositionTop表示操作欄位于當(dāng)前局部?jī)?nèi)容的頂部(比如,在彈出式氣泡的頂部)它不為狀態(tài)欄提供背景。
默認(rèn)情況下,所有的欄上按鈕都是無邊框的。詳情請(qǐng)看第18頁的“欄上按鈕”。
系統(tǒng)狀態(tài)欄(Status Bar)
因?yàn)橄到y(tǒng)狀態(tài)欄是透明的,所以可以透過它看到后面的視圖。狀態(tài)欄的風(fēng)格依照它內(nèi)容的外觀呈現(xiàn),包括時(shí)間、電量、Wi-Fi信號(hào)等。使用常量UIStatusBarStyle來指定使用黑色風(fēng)格還是白色風(fēng)格:
UIStatusBarStyleDefault 顯示黑色的文字內(nèi)容。當(dāng)狀態(tài)欄后面的內(nèi)容是淡色的時(shí)候適合使用。
UIStatusBarStyleLightContent 顯示白色的文字內(nèi)容。當(dāng)狀態(tài)欄后面的內(nèi)容是深色時(shí)使用比較合適。
有些情況下,導(dǎo)航欄和搜索欄的背景圖片可以向上延伸到狀態(tài)欄背后(詳情見22頁的“導(dǎo)航欄”章節(jié)和23頁的“搜索欄和范圍選擇欄”章節(jié))。如果狀態(tài)欄下面沒有其他欄,內(nèi)容視圖需要使用全屏高度。要了解視圖控制器是怎樣恰當(dāng)?shù)夭季值模?qǐng)看11頁的“使用視圖控制器”。在iOS 7中,通過獨(dú)立的視圖控制器,可以在app運(yùn)行的時(shí)候改變狀態(tài)欄的風(fēng)格。實(shí)現(xiàn)方法是在Info.plist中加入鍵UIViewControllerBasedStatusBarAppearance,并設(shè)置值為YES。
- 導(dǎo)航欄(Navigation Bar)
- 導(dǎo)航欄幫助用戶在不同信息層次結(jié)構(gòu)中穿梭,并選擇性地管理屏幕內(nèi)容。
iOS 7 iOS 6
iOS 7 讓在導(dǎo)航欄上增加搜索欄的變得非常簡(jiǎn)單。詳情參考第16頁的“搜索欄和范圍選擇欄”。* 如果想用自定義的圖像來替換返回的箭頭“<”的話,還需自己創(chuàng)建一個(gè)相應(yīng)的遮罩。在導(dǎo)航過場(chǎng)動(dòng)畫的時(shí)候,iOS 7使用遮罩來讓上個(gè)層級(jí)的標(biāo)題漸隱漸出。了解更多返回按鈕和遮罩圖像的控制屬性,請(qǐng)參閱 “UINavigationBar類參考” 。
如果你使用UIBarPositionTopAttached樣式創(chuàng)建了一個(gè)導(dǎo)航欄背景,確保圖像包含了系統(tǒng)狀態(tài)欄的區(qū)域。具體來說,你需要一個(gè)高分辨率下128像素的圖像。
下面這個(gè)表格描述了iOS 7如何對(duì)待不同高度的可變導(dǎo)航欄背景。(更多請(qǐng)看“UIImage類參考”)
表格 5-1 可變大小的背景圖片處理策略
搜索欄和范圍選擇欄(Search Bar & Scope Bar)避免使用超高的背景圖片來制作導(dǎo)航欄下面的自定義投影,這種技術(shù)在iOS 7中不起作用,因?yàn)槌叩膱D片會(huì)向上(系統(tǒng)狀態(tài)欄方向)擴(kuò)展,而不是向下(導(dǎo)航欄下面)擴(kuò)展。如果你想給導(dǎo)航欄增加投影,可以創(chuàng)建一個(gè)自定義圖片,然后使用shadowImage屬性來自定義投影圖片。
搜索欄接收用戶輸入的文字,下方可以附帶一個(gè)范圍選擇欄。
iOS 7 iOS 6
在iOS 7中,UISearchDisplayController包含了displaySearchBarInNavigationBar屬性,這樣你就可以將搜索欄放進(jìn)導(dǎo)航欄,就像日歷app里面這樣:如果你使用UIBarPositionTopAttached的位置為搜索欄創(chuàng)建了一個(gè)背景圖片,請(qǐng)確保圖片的高度包含了狀態(tài)欄的高度。如果你創(chuàng)建了一個(gè)可變大小的背景圖片,參閱15頁的表格5-1獲取更多iOS 7調(diào)整背景圖片大小的策略。
范圍選擇欄則允許用戶選擇搜索結(jié)果的范圍。
注意:范圍選擇欄不能單獨(dú)出現(xiàn);必須依附在搜索欄下面出現(xiàn)。
iOS 7 iOS 6
Tab欄(Tab Bar)
Tab欄讓用戶可以在不同子任務(wù)、視圖、模式之間切換。
iOS 7 iOS 6
如果使用了自定義icon的話,可以使用UITabBarItem中的selectedImage屬性來設(shè)置按下狀態(tài)的圖像。如果不提供按下狀態(tài)的icon,則兩個(gè)狀態(tài)會(huì)使用相同icon。
工具欄(Toolbar)
工具欄上放置當(dāng)前屏幕或者視圖下相關(guān)的對(duì)象的操作按鈕。
iOS 7 iOS 6
如果你創(chuàng)建了可變大小的背景圖片,請(qǐng)參考15頁的表格5-1獲取iOS 7處理不同尺寸圖片的細(xì)節(jié)。
欄上按鈕(Bar Buttons)
在iOS 6中,欄上按鈕可以是有邊框的,也可以是無邊框的。在iOS 7中只能是無邊框的。
iOS 7中的導(dǎo)航欄按鈕 iOS 6中的導(dǎo)航欄按鈕
為了更加明確,在iOS 7中,app的欄上按鈕經(jīng)常使用文字而不是圖形。例如,iOS 7中的日歷應(yīng)用使用了Inbox(收件箱)代替了收件箱圖形:
iOS 7 iOS 6
在早期版本的iOS中,自定義欄上按鈕圖片會(huì)自動(dòng)被當(dāng)做“template image”。(template image被用作最終圖像的一個(gè)遮罩。)而iOS 7中,你可以使用以下UIImage屬性來指定是否需要把自定義的圖片當(dāng)做template image來處理:
- UIImageRenderingModeAlwaysTemplate。圖片被用作Template Image。
- UIImageRenderingModeAlwaysOriginal。圖片按照原樣渲染。
如果你沒有指定對(duì)圖片的處理方法的話,圖片會(huì)使用包含它的視圖的默認(rèn)處理方式。比如,tab欄默認(rèn)會(huì)使用template處理方式,而進(jìn)度滑塊則會(huì)使用原樣完整渲染的處理方式。
注意:template image會(huì)依照其父結(jié)構(gòu)的著色進(jìn)行著色(更多請(qǐng)看18頁的“使用著色”)。如果不想讓欄上的元素被著色,為圖片設(shè)置UIImageRendering-ModeAlwaysOriginal屬性。
內(nèi)容視圖(Content View)
內(nèi)容視圖用來顯示自定義的app內(nèi)容。因?yàn)榇蠖鄶?shù)內(nèi)容視圖的外觀系統(tǒng)都沒有提供,所以iOS 7視覺上的變化對(duì)他們幾乎沒有影響。有個(gè)比較大的例外是分組聚合表格視圖,它在iOS 7上外觀有巨大的變化。
活動(dòng)菜單(Activity)
活動(dòng)菜單代表了一個(gè)可以響應(yīng)當(dāng)前選擇內(nèi)容的功能,它可以是系統(tǒng)提供的或者自定義的。用戶可以通過系統(tǒng)提供的活動(dòng)視圖控制器來使用這些功能,當(dāng)用戶點(diǎn)擊分享按鈕的時(shí)候,活動(dòng)視圖控制器就會(huì)從屏幕底部向上升起。
系統(tǒng)提供的活動(dòng)菜單中可以提供兩種風(fēng)格的按鈕:
- 原樣渲染的app圖標(biāo)——比如下面這個(gè)郵件的icon
- 和tab欄上的按鈕一樣的風(fēng)格——比如下面復(fù)制、打印這樣的icon
第三方功能總是使用第二種風(fēng)格的icon。
如果要在你的app中提供某個(gè)服務(wù),創(chuàng)建一個(gè)簡(jiǎn)潔、線框狀的template image。創(chuàng)建template image的時(shí)候請(qǐng)遵守下述指導(dǎo)原則:
- 使用黑色或者白色,配合適當(dāng)?shù)腶lpha透明度
- 不要使用投影
- 使用抗鋸齒效果
活動(dòng)菜單上的template image應(yīng)該在區(qū)域中居中,分辨率大約在70 x 70像素左右。
集合視圖(Collection View)
集合視圖用來管理和有序排列項(xiàng)目,將它們以可定制的布局進(jìn)行呈現(xiàn)。
在iOS 7中,集合視圖支持自定義過場(chǎng)動(dòng)畫。了解更多請(qǐng)參考“UICollectionViewTransition-Layout類參考”。
照片應(yīng)用使用了集合視圖來展示圖片集,并支持他們之間的過場(chǎng)動(dòng)畫。
圖片視圖(Image View)
圖片視圖顯示一張圖片或者一系列動(dòng)態(tài)的圖片。
在iOS 7中,UIImageView包含了著色屬性tintColor。當(dāng)圖片視圖包含template image的時(shí)候,tintColor會(huì)被應(yīng)用到圖片上。
地圖視圖(Map View)
地圖視圖展示地理數(shù)據(jù),支持自帶地圖應(yīng)用的大多數(shù)功能。
照片應(yīng)用中的地圖視圖幫助用戶查看照片的地理位置信息。
在iOS 7,只能夠使用一個(gè)新的類MKOverlayRenderer來在地圖視圖上面創(chuàng)建覆蓋層。
如果要給地圖視圖增加3D外觀的話,只需給它的camera屬性分配一個(gè)相機(jī)對(duì)象即可(MKMapCamera的一個(gè)實(shí)例)。要了解更多,參考“MKMapView類參考”。