如何锁定UIAlertController的方向?

时间:2016-05-20 07:52:02

标签: ios objective-c swift ios9 uialertcontroller

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

UIAlertView crashs in iOS 8.3

iOS 8.3 supported orientations crashs

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分: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];

...