gpt4 book ai didi

iOS 通用二进制 - 切换 ModalPresentationStyle

转载 作者:行者123 更新时间:2023-12-01 16:56:15 25 4
gpt4 key购买 nike

我通常为 iPhone 做应用程序;今天我尝试为应用程序创建一个接口(interface)(通用二进制)。
问题是我的屏幕很少有控件,我想使用 UIModalPresentationFormSheet 来调整界面。但是在使用这种演示的屏幕之后,我想切换回全屏(使用相同的导航 Controller )。

最初在 iPhone 部分我有 UINavigationController -> 子 Controller 。
由于它是相同的类 Controller ,我想为 iPad 保留类似的架构。
目前我做以下
UINavigationController -> ModalController -> UINavigationController -> 子 Controller
但如上所述,子 Controller 应该能够从 FormSheet 切换到全屏,导航栏位于顶部。
我正在使用 Storyboard。

而且我知道我不太擅长解释,这里有一个截图可以澄清我的问题:https://dl.dropbox.com/u/9858108/stack_overflow_iPad_nav_issue.jpg

最佳答案

好的,我找到了一个肮脏的解决方案,但解决了问题。
我有以下配置
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);
}
}

现在在我的 subview Controller 中,我必须调用该方法两次(否则,当您按下回时,模态视图的大小与前一个 Controller 保持不变,因此您必须将其放在 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/在 Storyboard 中,单击较小的 View Controller (框图标)
2/在属性面板上,将大小设置为 iPad 全屏

希望这会有所帮助,欢迎对如何改进代码发表任何评论:)

关于iOS 通用二进制 - 切换 ModalPresentationStyle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11527312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com