2014-03-06 89 views
0

如何強制我的一個視圖控制器在iOS中是全屏和橫屏?我的應用程序處於肖像模式,但我希望只有其中一個視圖是橫向和全屏。強制UIViewController全屏和橫向

我想這solution其中包括了與下面的方法實現CustomUINavigationController並加入我的ViewController的shouldAutorotate方法,我想旋轉:

//自定義的UINavigationController

-(NSUInteger)supportedInterfaceOrientations{ 

    return UIInterfaceOrientationMaskLandscapeRight; 

    } 
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
    return UIInterfaceOrientationLandscapeRight; 
    } 
- (BOOL)shouldAutorotate{ 
     return YES; 
    } 

//的UIViewController我想自動旋轉

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return self.topViewController.supportedInterfaceOrientations; 
} 

我想我的問題與它有關該視圖的解決方案。它適用於如果我的ViewController是我的初始視圖控制器,但不是所有的視圖。我有一個自定義菜單和一個佔位符(視圖),顯示所有其他視圖。我想成爲橫向和全屏的viewcontroller來自佔位符內的視圖,也許這是問題,但我現在不怎麼解決它。

+0

[如何處理iOS 6中的不同方向]的副本(http://stackoverflow.com/questions/15947349/how-to-handle-different-orientations-in-ios-6)。查看我的答案,瞭解您需要的項目示例。 –

+0

@LeoNatan它不工作。它在一個單獨的項目中工作,但不在我的項目中,而我的意見是有爭議的。我收到警告:不鼓勵在分離的視圖控制器上呈現視圖控制器。我有一個自定義菜單和佔位符(視圖),我可以看到所有其他視圖。我想成爲橫向和全屏的視圖控制器來自佔位符中的視圖,也許這是問題 – nabrugir

+1

當您有一個沒有父視圖控制器或呈現視圖控制器的視圖控制器時,會引發該警告。您應該記得將所有子視圖控制器作爲子視圖添加到呈現視圖控制器。 –

回答

0

因此,當一個的viewController被稱爲呈現爲自,以下方法將調用:

-(NSUInteger)supportedInterfaceOrientations{ 

    return UIInterfaceOrientationMaskLandscapeRight; 

    } 
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
    return UIInterfaceOrientationLandscapeRight; 
    } 
- (BOOL)shouldAutorotate{ 
     return YES; 
    } 

正如你所看到的,通過把他們我迫使UIViewContoller顯示LandscapeRight。

重要不是! :如果您使用UINavigation控制器,則需要創建一些「主」導航控制器子視圖,並在那裏調用這些方法。

希望這會有所幫助!

+0

由於未捕獲的異常'UIApplicationInvalidInterfaceOrientation',我得到錯誤終止應用程序,原因:'支持的方向與應用程序沒有共同的方向,並且shouldAutorotate返回YES'。我想這是因爲我不支持橫向模式(我的視圖不旋轉),你知道我可以解決嗎? – nabrugir

+0

嘗試點擊您的應用程序,然後點擊「常規」,然後檢查是否選中了「Lanscape Left」和「Landscape Right」。 – MCMatan

+0

它不起作用。我收到警告:不鼓勵在分離的視圖控制器上呈現視圖控制器。我有一個自定義菜單和佔位符(視圖),我可以看到所有其他視圖。我想成爲橫向和全屏的視圖控制器來自佔位符中的視圖,也許這是問題所在。 – nabrugir

0

您可以使用我的LNWindowManager以模態方式在不同窗口中顯示視圖控制器。

https://github.com/LeoNatan/LNWindowManager

它公開了一個類似的API模態視圖控制器呈現,而是延伸到窗口:

- (IBAction)displayButtonTapped:(UIButton *)sender 
{ 
    UINavigationController* nvc = [self.storyboard instantiateViewControllerWithIdentifier:@"__presentationNVC"]; 
    nvc.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissWindow:)]; 

    UIWindow* window = [LNWindowManager templateWindowForName:@"example"]; 
    window.rootViewController = nvc; 

    [[LNWindowManager sharedWindowManager].topWindow presentWindow:window animated:YES completion:nil]; 
} 

- (void)dismissWindow:(UIBarButtonItem*)barButtonItem 
{ 
    [[LNWindowManager sharedWindowManager].topWindow.presentingWindow dismissWindow:[LNWindowManager sharedWindowManager].topWindow animated:YES completion:nil]; 
} 

可以接着確定與AppDelegate中方法對每個窗口的方向:

– application:supportedInterfaceOrientationsForWindow: