2

我通常爲iPhone做應用程序;今天我嘗試爲應用程序創建一個接口(通用二進制)。 問題是我有幾個控件的屏幕,我想調整接口,用UIModalPresentationFormSheet。但在使用這種演示文稿的屏幕之後,我想切換回全屏模式(使用相同的導航控制器)。iOS通用二進制 - 開關ModalPresentationStyle

最初在iPhone部分我有UINavigationController - >子控制器。因爲它是相同的類控制器,所以我想爲iPad保留一個類似的體系結構。 目前我做了以下操作 UINavigationController - > ModalController - > UINavigationController - >子控制器 但如上所述,子控制器應該能夠從FormSheet切換到全屏,導航欄在頂部。 我正在使用故事板。

當我知道我不是爲了解釋真的很好,這裏是應該澄清我的問題截圖:https://dl.dropbox.com/u/9858108/stack_overflow_iPad_nav_issue.jpg

回答

0

好吧,我發現了一個骯髒的解決方案但解決了這一問題。 我有以下配置 NavigationController - > UIViewController - [Modal] - > UINavigationController - > UIViewController1 - [Push] - > UIViewController2(檢查上面的截圖)。

現在的想法是調整ModalView(我強制橫向模式,所以肖像不支持,但你可以很容易地修改代碼)。我有一個包含有用方法的singletton類,我稱之爲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); 
    } 
} 

現在在我的子viewcontrollers我要調用該方法兩次(否則當你按下背面的modalview的大小是從以前的控制器依然古色古香,所以你必須把它在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之間輕鬆切換。 現在還有一個問題:在故事板上,視圖仍然很小,添加內容並不容易。所以,你必須這樣做: 1 /在故事板,單擊視圖控制器這是小(盒圖示) 2 /在屬性面板上,設置大小到iPad全屏

希望這有助於任何評論如何改進代碼是值得歡迎的:)