好的,我找到了一个肮脏的解决方案,但解决了问题。我有以下配置 NavigationController -> UIViewController -[Modal]-> UINavigationController -> UIViewController1 -[Push]-> UIViewController2 (检查上面的屏幕截图)。
现在的想法是调整 ModalView 的大小(我强制横向模式,因此不支持纵向但您可以轻松修改代码)。我有一个包含有用方法的单例类,我称之为 AppKit。在 AppKit.m 中:
#pragma mark - Window functions (modal, ...)
/**
* Cette méthode redimmensionne une modal view en type PaperSheet.
* Utilisé dans le viewDidAppear du controller enfant.
* Permet de mettre des modal view en fullscreen.
*
* @param id viewController Le viewController parent
*/
- (void)resizeModalToPaperSheet:(id) viewController {
// Adaptation de la taille de la fenêtre pour iPad
if (isIPad) {
[viewController navigationController].view.superview.center = CGPointMake(0.0f, 0.0f);
[viewController navigationController].view.superview.frame = CGRectMake(84.0f, 242.0f, 540.0f, 540.0f);
}
}
/**
* Cette méthode redimmensionne une modal view en type FullScreen.
* Utilisé dans le viewDidAppear du controller enfant.
* Permet de mettre des modal view en fullscreen.
*
* @param id viewController Le viewController parent
*/
- (void)resizeModalToFullScreen:(id) viewController {
// Adaptation de la taille de la fenêtre pour iPad
if (isIPad) {
[viewController navigationController].view.superview.center = CGPointMake(0.0f, 0.0f);
[viewController navigationController].view.superview.frame = CGRectMake(20.0f, 0.0f, 754.0f, 1024.0f);
}
}
现在在我的子视图控制器中,我必须调用该方法两次(否则当您按下回时,模态视图的大小与前一个控制器保持不变,因此您必须将其放在 viewDidAppear 中)。
ViewController 1(纸张大小):
-(void) viewWillAppear:(BOOL)animated {
[[AppKit sharedInstance] resizeModalToPaperSheet: self];
}
-(void) viewDidAppear:(BOOL)animated {
[[AppKit sharedInstance] resizeModalToPaperSheet: self];
}
ViewController 1(全屏大小):
-(void) viewWillAppear:(BOOL)animated {
[[AppKit sharedInstance] resizeModalToFullScreen: self];
}
-(void) viewDidAppear:(BOOL)animated {
[[AppKit sharedInstance] resizeModalToFullScreen: self];
}
而且效果很好;我可以轻松地在全屏和 PaperSheet 之间切换。现在还有一个问题:在storyboard上,view还是很小的,里面加东西也不容易。所以你必须这样做: 1/ 在情节提要中,单击视图控制器,它是小(框图标) 2/ 在属性面板上,将大小设置为 iPad 全屏
希望这会有所帮助,欢迎对如何改进代码发表任何评论:)