iOS 通用二进制 - 切换 ModalPresentationStyle
Posted
技术标签:
【中文标题】iOS 通用二进制 - 切换 ModalPresentationStyle【英文标题】:iOS universal binary - switch ModalPresentationStyle 【发布时间】:2012-07-17 17:01:15 【问题描述】:我通常为 iPhone 做应用程序;今天我尝试为应用程序创建一个接口(通用二进制)。 问题是我的屏幕很少有控件,我想使用 UIModalPresentationFormSheet 来调整界面。但是在使用这种演示的屏幕之后,我想切换回全屏(使用相同的导航控制器)。
最初在 iPhone 部分我有 UINavigationController -> 子控制器。 由于它是相同的类控制器,我想为 iPad 保留类似的架构。 目前我做以下 UINavigationController -> ModalController -> UINavigationController -> 子控制器 但如上所述,子控制器应该能够从 FormSheet 切换到全屏,导航栏位于顶部。 我正在使用情节提要。
而且我知道我不太擅长解释,这里有一个截图可以澄清我的问题:https://dl.dropbox.com/u/9858108/stack_overflow_iPad_nav_issue.jpg
【问题讨论】:
【参考方案1】:好的,我找到了一个肮脏的解决方案,但解决了问题。 我有以下配置 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(PaperSheet 大小):
-(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 全屏
希望对您有所帮助,欢迎对如何改进代码提出任何意见 :)
【讨论】:
以上是关于iOS 通用二进制 - 切换 ModalPresentationStyle的主要内容,如果未能解决你的问题,请参考以下文章
安卓IOS端AEC密钥加密 Java端密钥解密通用实现(16进制表现形式)