在我的应用程序中,我在横向模式下只有一个UIViewController
,如果我在应用程序中导航它可以正常工作。但是当我从该横向视图控制器呈现UIAlertController
(用于显示警报视图)并更改设备方向时,它会更改该横向视图控制器的方向。我试过不同的解决方案:
iOS 8.3 supported orientations crashs
但这些都不适合我。我如何锁定UIAlertController
的方向?注意:我的应用支持iOS9
。
如果要锁定整个应用程序的方向:如果您正在使用XCode,请展开左侧文件概述。单击App(最高元素),它旁边应该有XCode图标。然后,您可以在“设备方向”下选择支持的状态。
如果您只想锁定一个视图的方向:
override func shouldAutorotate() -> Bool {
return false
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.Portrait
}
这是另一种解决方案,只需在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];
...