如何锁定UIAlertController方向?

问题描述 投票:3回答:2

在我的应用程序中,我在横向模式下只有一个UIViewController,如果我在应用程序中导航它可以正常工作。但是当我从该横向视图控制器呈现UIAlertController(用于显示警报视图)并更改设备方向时,它会更改该横向视图控制器的方向。我试过不同的解决方案:

UIAlertView crashs in iOS 8.3

iOS 8.3 supported orientations crashs

但这些都不适合我。我如何锁定UIAlertController的方向?注意:我的应用支持iOS9

ios objective-c swift ios9 uialertcontroller
2个回答
0
投票

如果要锁定整个应用程序的方向:如果您正在使用XCode,请展开左侧文件概述。单击App(最高元素),它旁边应该有XCode图标。然后,您可以在“设备方向”下选择支持的状态。

如果您只想锁定一个视图的方向:

override func shouldAutorotate() -> Bool {
    return false
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.Portrait
}

0
投票

这是另一种解决方案,只需在UIAlertController中锁定方向,这样就可以避免失去在viewController中旋转屏幕的能力。

PXCustomUIAlertController.h

#import <UIKit/UIKit.h>

@interface PXCustomUIAlertController : UIAlertController
@end

PXCustomUIAlertController.m

#import "PXCustomUIAlertController.h"

@interface PXCustomUIAlertController ()
@end

@implementation  PXCustomUIAlertController


- (instancetype)init
{
    self = [super init];
    return self;
}


-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
}

@end

然后你可以重视这个类并使用如下:

    PXCustomUIAlertController *alertController = [PXCustomUIAlertController
                                                      alertControllerWithTitle:nil
                                                      message:nil
                                                      preferredStyle:UIAlertControllerStyleActionSheet];

...
© www.soinside.com 2019 - 2024. All rights reserved.