Как упомянул @Mats в своем комментарии, информационный словарь содержит строковые значения для поддерживаемых ориентаций. Вам необходимо преобразовать строковое значение в тип желания UIInterfaceOrientationMask
. Вы можете использовать строковую категорию для этого.
NSString + UIDeviceOrientation.h
static NSString *kUIInterfaceOrientationPortrait = @"UIInterfaceOrientationPortrait";
static NSString *kUIInterfaceOrientationLandscapeLeft = @"UIInterfaceOrientationLandscapeLeft";
static NSString *kUIInterfaceOrientationLandscapeRight = @"UIInterfaceOrientationLandscapeRight";
static NSString *kUIInterfaceOrientationPortraitUpsideDown = @"UIInterfaceOrientationPortraitUpsideDown";
@interface NSString (UIDeviceOrientation)
- (UIInterfaceOrientationMask)deviceOrientation;
@end
NSString + UIDeviceOrientation.m
@implementation NSString (UIDeviceOrientation)
- (UIInterfaceOrientationMask)deviceOrientation {
UIInterfaceOrientationMask mask = UIInterfaceOrientationMaskAll;
if ([self isEqualToString:kUIInterfaceOrientationPortrait]) {
mask = UIInterfaceOrientationMaskPortrait;
}
else if ([self isEqualToString:kUIInterfaceOrientationLandscapeLeft]) {
mask = UIInterfaceOrientationMaskLandscapeLeft;
}
else if ([self isEqualToString:kUIInterfaceOrientationLandscapeRight]) {
mask = UIInterfaceOrientationMaskLandscapeRight;
}
else if ([self isEqualToString:kUIInterfaceOrientationPortraitUpsideDown]) {
mask = UIInterfaceOrientationMaskPortraitUpsideDown;
}
return mask;
}
Swift версия
extension String {
private var kUIInterfaceOrientationPortrait: String {
return "UIInterfaceOrientationPortrait"
}
private var kUIInterfaceOrientationLandscapeLeft: String {
return "UIInterfaceOrientationLandscapeLeft"
}
private var kUIInterfaceOrientationLandscapeRight: String {
return "UIInterfaceOrientationLandscapeRight"
}
private var kUIInterfaceOrientationPortraitUpsideDown: String {
return "UIInterfaceOrientationPortraitUpsideDown"
}
public var deviceOrientation: UIInterfaceOrientationMask {
switch self {
case kUIInterfaceOrientationPortrait:
return .portrait
case kUIInterfaceOrientationLandscapeLeft:
return .landscapeLeft
case kUIInterfaceOrientationLandscapeRight:
return .landscapeRight
case kUIInterfaceOrientationPortraitUpsideDown:
return .portraitUpsideDown
default:
return .all
}
}
}