react-native-navigation的迁移库

RNNOverlayManager.m 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #import "RNNOverlayManager.h"
  2. #import "RNNOverlayWindow.h"
  3. @implementation RNNOverlayManager {
  4. NSMutableArray* _overlayWindows;
  5. }
  6. - (instancetype)init {
  7. self = [super init];
  8. _overlayWindows = [[NSMutableArray alloc] init];
  9. return self;
  10. }
  11. #pragma mark - public
  12. - (void)showOverlay:(UIViewController *)viewController {
  13. UIWindow* overlayWindow = [[RNNOverlayWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  14. [_overlayWindows addObject:overlayWindow];
  15. [overlayWindow setWindowLevel:UIWindowLevelNormal];
  16. [overlayWindow setRootViewController:viewController];
  17. [overlayWindow setHidden:NO];
  18. }
  19. - (void)dismissOverlay:(UIViewController*)viewController {
  20. UIWindow* overlayWindow = [self findWindowByRootViewController:viewController];
  21. [self detachOverlayWindow:overlayWindow];
  22. }
  23. #pragma mark - private
  24. - (void)detachOverlayWindow:(UIWindow *)overlayWindow {
  25. [overlayWindow setHidden:YES];
  26. [_overlayWindows removeObject:overlayWindow];
  27. }
  28. - (UIWindow *)findWindowByRootViewController:(UIViewController *)viewController {
  29. for (UIWindow* window in _overlayWindows) {
  30. if ([window.rootViewController isEqual:viewController]) {
  31. return window;
  32. }
  33. }
  34. return nil;
  35. }
  36. @end