ViewController.m 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. //
  2. // ViewController.m
  3. // Pandora
  4. //
  5. // Created by Mac Pro_C on 12-12-26.
  6. // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
  7. //
  8. #import "ViewController.h"
  9. #import "PDRToolSystem.h"
  10. #import "PDRToolSystemEx.h"
  11. #import "AppDelegate.h"
  12. #define kStatusBarHeight 20.f
  13. @implementation ViewController
  14. - (void)loadView
  15. {
  16. PDRCore *h5Engine = [PDRCore Instance];
  17. [super loadView];
  18. [self setStatusBarStyle:h5Engine.settings.statusBarStyle];
  19. _isFullScreen = [UIApplication sharedApplication].statusBarHidden;
  20. if ( _isFullScreen != h5Engine.settings.fullScreen ) {
  21. _isFullScreen = h5Engine.settings.fullScreen;
  22. if ( [self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)] ) {
  23. [self setNeedsStatusBarAppearanceUpdate];
  24. } else {
  25. [[UIApplication sharedApplication] setStatusBarHidden:_isFullScreen];
  26. }
  27. }
  28. self.view.backgroundColor = [UIColor whiteColor];
  29. [h5Engine setContainerView:self.view];
  30. h5Engine.persentViewController = self;
  31. if ( self.showLoadingView ) {
  32. [h5Engine showLoadingPage];
  33. }
  34. }
  35. - (void)viewDidAppear:(BOOL)animated {
  36. [super viewDidAppear:animated];
  37. }
  38. #pragma mark -
  39. - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
  40. duration:(NSTimeInterval)duration
  41. {
  42. [[PDRCore Instance] handleSysEvent:PDRCoreSysEventInterfaceOrientation
  43. withObject:[NSNumber numberWithInt:toInterfaceOrientation]];
  44. if ([PTDeviceOSInfo systemVersion] >= PTSystemVersion8Series) {
  45. [[UIApplication sharedApplication] setStatusBarHidden:_isFullScreen ];
  46. }
  47. }
  48. - (BOOL)shouldAutorotate
  49. {
  50. return TRUE;
  51. }
  52. - (UIInterfaceOrientationMask)supportedInterfaceOrientations
  53. {
  54. return [[PDRCore Instance].settings supportedInterfaceOrientations];
  55. }
  56. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  57. {
  58. if ( [PDRCore Instance].settings ) {
  59. return [[PDRCore Instance].settings supportsOrientation:interfaceOrientation];
  60. }
  61. return UIInterfaceOrientationPortrait == interfaceOrientation;
  62. }
  63. - (BOOL)prefersStatusBarHidden
  64. {
  65. return _isFullScreen;/*
  66. NSString *model = [UIDevice currentDevice].model;
  67. if (UIUserInterfaceIdiomPhone == UI_USER_INTERFACE_IDIOM()
  68. && (NSOrderedSame == [@"iPad" caseInsensitiveCompare:model]
  69. || NSOrderedSame == [@"iPad Simulator" caseInsensitiveCompare:model])) {
  70. return YES;
  71. }
  72. return NO;*/
  73. }
  74. - (UIStatusBarAnimation)preferredStatusBarUpdateAnimation {
  75. return UIStatusBarAnimationFade;
  76. }
  77. -(BOOL)getStatusBarHidden {
  78. if ( [PTDeviceOSInfo systemVersion] > PTSystemVersion6Series ) {
  79. return _isFullScreen;
  80. }
  81. return [UIApplication sharedApplication].statusBarHidden;
  82. }
  83. #pragma mark - StatusBarStyle
  84. -(UIStatusBarStyle)getStatusBarStyle {
  85. return [self preferredStatusBarStyle];
  86. }
  87. -(void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle {
  88. if ( _statusBarStyle != statusBarStyle ) {
  89. _statusBarStyle = statusBarStyle;
  90. if ( [self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)] ) {
  91. [self setNeedsStatusBarAppearanceUpdate];
  92. } else {
  93. [[UIApplication sharedApplication] setStatusBarStyle:_statusBarStyle];
  94. }
  95. }
  96. }
  97. - (UIStatusBarStyle)preferredStatusBarStyle
  98. {
  99. return _statusBarStyle;
  100. }
  101. #pragma mark -
  102. -(void)wantsFullScreen:(BOOL)fullScreen
  103. {
  104. if ( _isFullScreen == fullScreen ) {
  105. return;
  106. }
  107. _isFullScreen = fullScreen;
  108. [[UIApplication sharedApplication] setStatusBarHidden:_isFullScreen withAnimation:_isFullScreen?NO:YES];
  109. if ( [PTDeviceOSInfo systemVersion] > PTSystemVersion6Series ) {
  110. [self setNeedsStatusBarAppearanceUpdate];
  111. }// else {
  112. // return;
  113. // }
  114. CGRect newRect = self.view.bounds;
  115. if ( [PTDeviceOSInfo systemVersion] <= PTSystemVersion6Series ) {
  116. newRect = [UIApplication sharedApplication].keyWindow.bounds;
  117. if ( _isFullScreen ) {
  118. [UIView beginAnimations:nil context:nil];
  119. self.view.frame = newRect;
  120. [UIView commitAnimations];
  121. } else {
  122. UIInterfaceOrientation interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation;
  123. if ( UIDeviceOrientationLandscapeLeft == interfaceOrientation
  124. || interfaceOrientation == UIDeviceOrientationLandscapeRight ) {
  125. newRect.size.width -=kStatusBarHeight;
  126. } else {
  127. newRect.origin.y += kStatusBarHeight;
  128. newRect.size.height -=kStatusBarHeight;
  129. }
  130. [UIView beginAnimations:nil context:nil];
  131. self.view.frame = newRect;
  132. [UIView commitAnimations];
  133. }
  134. [[PDRCore Instance] handleSysEvent:PDRCoreSysEventInterfaceOrientation
  135. withObject:[NSNumber numberWithInt:0]];
  136. }
  137. }
  138. - (void)didReceiveMemoryWarning{
  139. [[PDRCore Instance] handleSysEvent:PDRCoreSysEventReceiveMemoryWarning withObject:nil];
  140. }
  141. - (void)dealloc {
  142. }
  143. @end