1. iOS13 present viewcontroller出现的问题
更新了Xcode11之后,在iOS13中运行代码发现presentViewController和之前弹出的样式会出现如下情况
会出现这个问题主要是因为之前对*UIViewController
*里面的一个属性。modalPresentationStyle
该属性是控制器在模态视图时将要使用的样式没有设置需要的类型。
在iOS13中modalPresentationStyle
的默认改为UIModalPresentationAutomatic
,而在之前默认是UIModalPresentationFullScreen
。
/*
Defines the presentation style that will be used for this view controller when it is presented modally. Set this property on the view controller to be presented, not the presenter.
If this property has been set to UIModalPresentationAutomatic, reading it will always return a concrete presentation style. By default UIViewController resolves UIModalPresentationAutomatic to UIModalPresentationPageSheet, but other system-provided view controllers may resolve UIModalPresentationAutomatic to other concrete presentation styles.
Defaults to UIModalPresentationAutomatic on iOS starting in iOS 13.0, and UIModalPresentationFullScreen on previous versions. Defaults to UIModalPresentationFullScreen on all other platforms.
*/
@property(nonatomic,assign) UIModalPresentationStyle modalPresentationStyle API_AVAILABLE(ios(3.2));
修改回原来模态视图样式,我们只需要把UIModalPresentationStyle
设置UIModalPresentationFullScreen
Objective-C
SecondViewController *vc = [[SecondViewController alloc] init];
vc.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:vc animated:YES completion:nil];
带导航栏部分
SecondViewController *vc = [[SecondViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
nav.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:nav animated:YES completion:nil];
Swift
let vc = SecondViewController()
vc.modalPresentationStyle = .fullScreen
self.present(vc, animated: true, completion: nil)