| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | //
//  UIViewController+Rotation.m
//  ReactNativeNavigation
//
//  Created by Ran Greenberg on 05/03/2017.
//  Copyright © 2017 artal. All rights reserved.
//
#import "UIViewController+Rotation.h"
#import <objc/runtime.h>
static NSString *const ORIENTATION =            @"orientation";
static NSString *const ORIENTATION_PORTRAIT =   @"portrait";
static NSString *const ORIENTATION_LANDSCAPE =  @"landscape";
static NSString *const ORIENTATION_AUTO =       @"auto";      // defualt
@interface UIViewController (Rotation)
@property (nonatomic, strong) NSString *orientation;
@end
@implementation UIViewController (Rotation)
-(NSString*)orientation {
    return objc_getAssociatedObject(self, @selector(orientation));
}
-(void)setOrientation:(NSString*)newOrientation {
    objc_setAssociatedObject(self, @selector(orientation), newOrientation, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
#pragma mark - Public API
-(void)setRotation:(NSDictionary*)props {
    NSString *orientation = props[@"style"][ORIENTATION];
    if (!orientation) {
        orientation = props[@"appStyle"][ORIENTATION];
    }
    if (orientation) {
        self.orientation = orientation;
    }
}
-(UIInterfaceOrientationMask)supportedControllerOrientations {
    if ([self.orientation isEqualToString:ORIENTATION_PORTRAIT]) {
        return UIInterfaceOrientationMaskPortrait;
    }
    else if ([self.orientation isEqualToString:ORIENTATION_LANDSCAPE]) {
        return UIInterfaceOrientationMaskLandscape;
    }
    
    return UIInterfaceOrientationMaskAll;
}
@end
 |