如何强制纵向? [关闭]

Posted

技术标签:

【中文标题】如何强制纵向? [关闭]【英文标题】:How to force portrait orientation? [closed] 【发布时间】:2014-05-22 10:24:36 【问题描述】:

如果我的应用程序最初支持两个方向,如何在ios 7 中强制纵向?

【问题讨论】:

不清楚你能解释更多。整个应用只需要纵向模式吗 Force portrait orientation while pushing from landscape View Controller的可能重复 【参考方案1】:

对于整个应用程序,打开项目文件,转到“常规”选项卡,更改设置:

或者直接在Info.plist文件上:

如果您只想在特定的视图控制器上使用它,请覆盖 supportedInterfaceOrientations:

- (NSUInteger)supportedInterfaceOrientations

    return UIInterfaceOrientationMaskPortrait;

你可以在官方UIViewController documentation阅读更多关于第二种方法的信息。也许,您会找到更适合您的具体问题的方法。

【讨论】:

简单而正确,但要注意 -(BOOL)shouldAutorotate 方法。它不能被覆盖,或者返回 YES,否则它将不起作用。【参考方案2】:
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:c animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];

【讨论】:

可能这段代码不符合苹果的标准,不确定..但它很好的破解。 当我们使用此代码时,我们的应用将不会被 Apple 批准用于生产。 您能解释一下为什么会这样吗?此外,这些方法在 iOS 6 中已弃用。Apple 可能决定在 iOS 8 中删除它们。这不是 Apple 第一次弃用并在不久之后删除的方法。 @PrabhuNatarajan 你怎么能说它会被苹果拒绝,在那里你可以找到这样的声明 不适用于 iOS 8【参考方案3】:

使用以下方法: 在您的应用委托中 .h

@interface PlayWithWSWithLibAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> 

       BOOL flagOrientationAll;


@property (assign) BOOL flagOrientationAll;

在您的应用委托 .m 文件中添加以下方法

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
    //NSLog(@"PlayWithWSWithLibAppDelegate -- supportedInterfaceOrientationsForWindow");
    if(flagOrientationAll == YES)
        return UIInterfaceOrientationMaskPortrait;
     else 
        return UIInterfaceOrientationMaskAll;
    

在您想要为 iPhone 设备纵向和横向旋转的视图中实现以下方式

-(void)viewWillAppear:(BOOL)animated

    self.tabBarController.delegate = self;

    PlayWithWSWithLibAppDelegate *delegate = (PlayWithWSWithLibAppDelegate *) [[UIApplication sharedApplication] delegate];
    delegate.flagOrientationAll = YES;
 


-(void)viewWillDisappear:(BOOL)animated

    //NSLog(@"viewWillDisappear -- Start");
     PlayWithWSWithLibAppDelegate *delegate = (PlayWithWSWithLibAppDelegate *)[[UIApplication sharedApplication] delegate];
        delegate.flagOrientationAll = NO;

这是我的一些与您的问题相似的主题:iOS 7 Interface Orientation

【讨论】:

【参考方案4】:
#import <objc/message.h>

objc_msgSend([UIDevice currentDevice], @selector(setOrientation:), UIInterfaceOrientationLandscapeRight);//here you may change your desired Orientation

【讨论】:

以上是关于如何强制纵向? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何强制关闭Ubuntu无响应程序

如何强制关闭程序

关闭 MailComposerView 后 UITableView 方向错误

强制关闭一个正在运行的程序应该怎么做?

如何强制关闭 GetX Snackbar?

Android:如何在“强制关闭”后自动重启应用程序?