Initial commit
This commit is contained in:
+124
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// MMProgressHUDViewController.m
|
||||
// MMProgressHUDDemo
|
||||
//
|
||||
// Created by Lars Anderson on 6/28/12.
|
||||
// Copyright (c) 2012 Mutual Mobile. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MMProgressHUDViewController.h"
|
||||
#import "MMProgressHUDWindow.h"
|
||||
#import "MMProgressHUD.h"
|
||||
#import "MMProgressHUDCommon.h"
|
||||
|
||||
|
||||
#define suppressDeprecation(Stuff) \
|
||||
do { \
|
||||
_Pragma("clang diagnostic push") \
|
||||
_Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
|
||||
Stuff; \
|
||||
_Pragma("clang diagnostic pop") \
|
||||
} while (0)
|
||||
|
||||
|
||||
@implementation MMProgressHUDViewController
|
||||
|
||||
- (void)setView:(UIView *)view {
|
||||
[super setView:view];
|
||||
|
||||
#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
|
||||
#ifdef __IPHONE_7_0
|
||||
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0
|
||||
/** this line is important. this tells the view controller to not resize
|
||||
the view to display the status bar -- unless we're on iOS 7 -- in
|
||||
which case it's deprecated and does nothing */
|
||||
[self setWantsFullScreenLayout:YES];
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
- (BOOL)oldRootViewControllerShouldRotateToOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
|
||||
BOOL shouldRotateToOrientation = NO;
|
||||
MMProgressHUDWindow *win = (MMProgressHUDWindow *)self.view.window;
|
||||
UIViewController *rootViewController = win.oldWindow.rootViewController;
|
||||
suppressDeprecation(
|
||||
if ([[self superclass] instancesRespondToSelector:@selector(presentedViewController)] &&
|
||||
([rootViewController presentedViewController] != nil)) {
|
||||
MMHudLog(@"Presented view controller: %@", rootViewController.presentedViewController);
|
||||
shouldRotateToOrientation = [rootViewController.presentedViewController shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];
|
||||
}
|
||||
|
||||
if ((shouldRotateToOrientation == NO) &&
|
||||
(rootViewController != nil)) {
|
||||
|
||||
shouldRotateToOrientation = [rootViewController shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];
|
||||
}
|
||||
else if (rootViewController == nil) {
|
||||
MMHudWLog(@"Root view controller for your application cannot be found! Defaulting to liberal rotation handling for your device!");
|
||||
|
||||
shouldRotateToOrientation = [super shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];
|
||||
}
|
||||
);
|
||||
|
||||
return shouldRotateToOrientation;
|
||||
}
|
||||
|
||||
/** The rotation callbacks for this view controller will never get fired on iOS <5.0. This must be related to creating a view controller in a new window besides the default keyWindow. Since this is the case, the manual method of animating the rotating the view's transform is used via notification observers added in setView: above.
|
||||
|
||||
*/
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
|
||||
|
||||
if ([self.view.window isKindOfClass:[MMProgressHUDWindow class]]) {
|
||||
return [self oldRootViewControllerShouldRotateToOrientation:toInterfaceOrientation];;
|
||||
}
|
||||
else {
|
||||
return [super shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];
|
||||
}
|
||||
}
|
||||
|
||||
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
|
||||
MMProgressHUDWindow *win = (MMProgressHUDWindow *)self.view.window;
|
||||
UIViewController *rootViewController = win.oldWindow.rootViewController;
|
||||
|
||||
if ([win isKindOfClass:[MMProgressHUDWindow class]] &&
|
||||
[rootViewController respondsToSelector:@selector(supportedInterfaceOrientations)]) {
|
||||
return [rootViewController supportedInterfaceOrientations];
|
||||
}
|
||||
else {
|
||||
MMHudWLog(@"Root view controller for your application cannot be found! Defaulting to liberal rotation handling for your device!");
|
||||
}
|
||||
|
||||
return [super supportedInterfaceOrientations];
|
||||
}
|
||||
|
||||
- (BOOL)shouldAutorotate {
|
||||
MMProgressHUDWindow *win = (MMProgressHUDWindow *)self.view.window;
|
||||
UIViewController *rootViewController = win.oldWindow.rootViewController;
|
||||
|
||||
if ([win isKindOfClass:[MMProgressHUDWindow class]] &&
|
||||
[rootViewController respondsToSelector:@selector(shouldAutorotate)]) {
|
||||
|
||||
return [rootViewController shouldAutorotate];
|
||||
}
|
||||
else {
|
||||
MMHudWLog(@"Root view controller for your application cannot be found! Defaulting to liberal rotation handling for your device!");
|
||||
}
|
||||
|
||||
return [super shouldAutorotate];
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
MMHudLog(@"dealloc");
|
||||
}
|
||||
|
||||
- (UIStatusBarStyle)preferredStatusBarStyle NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extensions."){
|
||||
return [[UIApplication sharedApplication] statusBarStyle];
|
||||
}
|
||||
|
||||
- (BOOL)prefersStatusBarHidden NS_EXTENSION_UNAVAILABLE_IOS("Not available in app extensions."){
|
||||
return [[UIApplication sharedApplication] isStatusBarHidden];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user