1调炬、UIModalPresentationStyle(彈出風格)
typedef enum {
UIModalPresentationFullScreen = 0,
UIModalPresentationPageSheet,
UIModalPresentationFormSheet,
UIModalPresentationCurrentContext,
} UIModalPresentationStyle;
這四種方式在iPad上面統(tǒng)統(tǒng)有效载矿,但在iPhone和iPod touch上面系統(tǒng)始終以UIModalPresentationFullScreen模式顯示。
UIModalPresentationFullScreen代表彈出VC時纠屋,VC充滿全屏;
UIModalPresentationPageSheet代表彈出VC時据忘,VC的高度和當前屏幕高度相同,寬度和豎屏模式下屏幕寬度相同讹语,剩余未覆蓋區(qū)域將會變暗并阻止用戶點擊.這種彈出模式下钙皮,豎屏時跟UIModalPresentationFullScreen的效果一樣,橫屏時候兩邊則會留下變暗的區(qū)域顽决;
UIModalPresentationFormSheet這種模式下短条,VC的高度和寬度均會小于屏幕尺寸,VC居中顯示才菠,四周留下變暗區(qū)域茸时;
UIModalPresentationCurrentContext這種模式下,VC的彈出方式和彈出VC的VC的父VC的方式相同赋访。
2可都、UIModalTransitionStyle(彈出時的動畫風格)
typedef enum {
UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl,
} UIModalTransitionStyle;
從底部滑入,水平翻轉進入蚓耽,交叉溶解以及翻頁這四種風格可選渠牲。這四種風格不管是iPhone還是iPad都會根據(jù)我們指定的風格顯示轉場效果。
3步悠、例子
// 登陸后淡入淡出更換rootViewController
- (void)restoreRootViewController:(UIViewController *)rootViewController
{
typedef void (^Animation)(void);
UIWindow* window = [UIApplication sharedApplication].keyWindow;
rootViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
Animation animation = ^{
BOOL oldState = [UIView areAnimationsEnabled];
[UIView setAnimationsEnabled:NO];
[UIApplication sharedApplication].keyWindow.rootViewController = rootViewController;
[UIView setAnimationsEnabled:oldState];
};
[UIView transitionWithView:window
duration:0.5f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:animation
completion:nil];
}