通過設置presenting VC的modalPresentationStyle屬性,我們可以設置彈出View Controller時的風格羡滑,有以下四種風格菇爪,其定義如下:
typedef enum {
UIModalPresentationFullScreen = 0,
UIModalPresentationPageSheet,
UIModalPresentationFormSheet,
UIModalPresentationCurrentContext,
} UIModalPresentationStyle;
UIModalPresentationFullScreen代表彈出VC時,presented VC充滿全屏柒昏,如果彈出VC的wantsFullScreenLayout設置為YES的凳宙,則會填充到狀態(tài)欄下邊,否則不會填充到狀態(tài)欄之下职祷。
UIModalPresentationPageSheet代表彈出是彈出VC時氏涩,presented VC的高度和當前屏幕高度相同届囚,寬度和豎屏模式下屏幕寬度相同,剩余未覆蓋區(qū)域將會變暗并阻止用戶點擊是尖,這種彈出模式下意系,豎屏時跟UIModalPresentationFullScreen的效果一樣,橫屏時候兩邊則會留下變暗的區(qū)域饺汹。
UIModalPresentationFormSheet這種模式下蛔添,presented VC的高度和寬度均會小于屏幕尺寸,presented VC居中顯示兜辞,四周留下變暗區(qū)域迎瞧。
UIModalPresentationCurrentContext這種模式下,presented VC的彈出方式和presenting VC的父VC的方式相同逸吵。
這四種方式在iPad上面統(tǒng)統(tǒng)有效凶硅,但在iPhone和iPod touch上面系統(tǒng)始終已UIModalPresentationFullScreen模式顯示presented VC。
ios8多了一個樣式UIModalPresentationOverCurrentContext胁塞,跟原來的很相近哦咏尝。而且定義的對象也變成了彈出的視圖。
所以用的話做版本判斷:
if ([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0) {
nextVC.modalPresentationStyle=UIModalPresentationOverCurrentContext;
}else{
self.modalPresentationStyle=UIModalPresentationCurrentContext;
}