UIModalPresentationStyle的樣式解析
typedefNS_ENUM(NSInteger, UIModalPresentationStyle) {
UIModalPresentationFullScreen =0,//由下到上,全屏覆蓋
UIModalPresentationPageSheet,//在portrait時是FullScreen,在landscape時和FormSheet模式一樣。
UIModalPresentationFormSheet,// 會將窗口縮小,使之居于屏幕中間。在portrait和landscape下都一樣,但要注意landscape下如果軟鍵盤出現,窗口位置會調整。
UIModalPresentationCurrentContext,//這種模式下,presented VC的彈出方式和presenting VC的父VC的方式相同。
UIModalPresentationCustom,//自定義視圖展示風格,由一個自定義演示控制器和一個或多個自定義動畫對象組成。符合UIViewControllerTransitioningDelegate協議。使用視圖控制器的transitioningDelegate設定您的自定義轉換。
UIModalPresentationOverFullScreen,//如果視圖沒有被填滿,底層視圖可以透過
UIModalPresentationOverCurrentContext,//視圖全部被透過
UIModalPresentationPopover,
UIModalPresentationNone ,
};
UIModalTransitionStyle的動畫效果展示
typedef NS_ENUM(NSInteger, UIModalTransitionStyle) {
UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal __TVOS_PROHIBITED,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl NS_ENUM_AVAILABLE_IOS(3_2) __TVOS_PROHIBITED,
};
-
UIModalTransitionStyleCrossDissolve
UIModalTransitionStyleCrossDissolve.gif
代碼如下:
- (void)ruleActionTrigged {
NWFTipAlertController *alertVc = [[NWFTipAlertController alloc] initWithNibName:@"NWFTipAlertController" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:alertVc];
nav.navigationBarHidden = YES;
nav.modalPresentationStyle = UIModalPresentationOverCurrentContext;
nav.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:nav animated:YES completion:nil];
}
//NWFTipAlertController.m 文件
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.7];
}
return self;
}
此處的只能用UIModalPresentationOverCurrentContext,要不然沒有透明背景的效果
-
UIModalTransitionStyleCoverVertical
UIModalTransitionStyleCoverVertical.gif -
UIModalTransitionStyleCrossDissolve
UIModalTransitionStyleCrossDissolve.gif -
UIModalTransitionStyleFlipHorizontal
UIModalTransitionStyleFlipHorizontal.gif -
UIModalTransitionStylePartialCurl
UIModalTransitionStylePartialCurl.gif
參考文章:
UIModalPresentationStyle即viewcontroller的顯示方式
[iOS]modalPresentationStyle和modalTransitionStyle
UIModalPresentationStyle和UIModalTransitionStyle 淺談