强制纵向而从横向视图控制器推(Force portrait orientation while pu

2019-07-19 02:37发布

应用程序的支持:iOS6的+

我的应用程序工作在纵向和横向。 但1个控制器应仅适用于人像。

问题是,当我在景观和推视图控制器的新视图 - 控制在景观以及直到我把它旋转为纵向。 那么它停留在肖像所应当的。

是否有可能总是使它出现在画像? 即使其母公司是推动它的景观?

所有下面的代码没有帮助

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

而这种代码的工作之前,除非我没有从横向推如何在iOS 6中迫使一个UIViewController为纵向

Answer 1:

我通过增加viewDidLoad中下列行解决这

UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:c animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];


Answer 2:

首先,你需要创建一个类别:

UINavigationController的+ Rotation_IOS6.h

#import <UIKit/UIKit.h>

@interface UINavigationController (Rotation_IOS6)

@end

UINavigationController的+ Rotation_IOS6.m:

#import "UINavigationController+Rotation_IOS6.h"

@implementation UINavigationController (Rotation_IOS6)

-(BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

@end

然后,您实现这些方法在你的类,你想成为唯一的景观:

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

如果你正在使用的UITabBarController,只需更换为的UITabBarController UINavigationController的的。 该解决方案经过长时间的搜寻后,工作对我来说太好了! 我是因为你现在同样的情况!

编辑

于是,我看到了你的样品。 你需要做出一些改变。 1 - 创建一个新类的UINavigationController的类别。 命名类的UINavigationController + Rotation_IOS6(h和.M)2 -你并不需要实现方法preferredInterfaceOrientationForPresentation 。 您的类别应该是这样的:

#import "UINavigationController+Rotation_IOS6.h"

@implementation UINavigationController (Rotation_IOS6)

-(BOOL)shouldAutorotate
{
    return [[self.viewControllers lastObject] shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations
{
    return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

@end

3 - 你要旋转仅在景观类,包括这在执行,正是这样:

// Rotation methods for iOS 6
- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

4 - 我会建议也包括您在景观想要自转的iOS 5类中的方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}


文章来源: Force portrait orientation while pushing from landscape View Controller