2015-09-09 3 views
-1

Я пытаюсь скрыть строку состояния только для iPhone 6 и 6+, это то, что я пробовал до сих пор.iOS Скрыть строку состояния для iPhone 6 и 6+

if (screenWidth == 375) { 
     // Remove status bar for iPhone 6 
     [[UIApplication sharedApplication] setStatusBarHidden:YES 
               withAnimation:UIStatusBarAnimationFade]; 
    }else if (screenWidth == 414){ 
     // Remove status bar for iPhone 6 + 
     [[UIApplication sharedApplication] setStatusBarHidden:YES 
               withAnimation:UIStatusBarAnimationFade]; 
    } 

ответ

0

Вы можете сделать (изменение Plist файла):

set Status bar is initially hidden = YES 

добавить строку:

View controller-based status bar appearance = NO 
0

Добавить следующие строки в viewDidLoad:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 

и добавить новый метод

- (BOOL)prefersStatusBarHidden { 
      return YES; 
    } 

также изменить файл info.plist

View controller-based status bar appearance" = NO 

А также добавить условие для iPhone 6 и 6 Plus.Here являются методы для iPhone 6 и 6 Plus:

/*===================================================================================================================== 
Checks if the device has 4.7 inch screen such as iPhone6 generation 
=====================================================================================================================*/ 
+(BOOL) ISiPhone6 
{ 
    BOOL isIpad = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad); 
    CGRect screenRect = [[UIScreen mainScreen] bounds]; 
    // we need to check the maximum of width and height because some screens (the camera view while scanning) we can 
    // rotate to portrait or landscape and in the case the screen height and width flip 
    return (!isIpad && MAX(screenRect.size.height,screenRect.size.width) == 667); 
} 

/*===================================================================================================================== 
Checks if the device has 5.5 inch screen such as iPhone6 plus 
=====================================================================================================================*/ 
+(BOOL) ISiPhone6Plus 
{ 
    BOOL isIpad = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad); 
    CGRect screenRect = [[UIScreen mainScreen] bounds]; 
    // we need to check the maximum of width and height because some screens (the camera view while scanning) we can 
    // rotate to portrait or landscape and in the case the screen height and width flip 
    return (!isIpad && MAX(screenRect.size.height,screenRect.size.width) == 736); 
} 

это работает для меня.

0

Первое: установить этот флаг вид контроллера на основе строки состояния внешнего вида ДА в info.plist или добавить его в качестве новой строки
Во-вторых: переопределить этот метод - (BOOL) prefersStatusBarHidden в каждой информации VC вы хотите скрыть или увидеть строка состояния. Для контроллера детского просмотра вам также необходимо реализовать этот метод. - (UIViewController *)childViewControllerForStatusBarHidden
В-третьих: если вы меняете вид строки состояния во время выполнения, вам нужно вызвать его метод для запуска анимации. -setNeedsStatusBarAppearanceUpdate
Все эти методы помогут вам создать подробный контроль над состоянием бар.
Если вам нужно, чтобы строка состояния исчезла при запуске только флаг Скрыть строку состояния в ваших целевых общих настройках.

0

Поскольку вы просто хотите скрыть строку состояния только в iPhone 6 и iPhone 6 Plus, вы можете сделать это, как показано ниже. Сначала добавьте это в свой класс.

#import <sys/utsname.h> 

Затем в методе viewDidLoad

NSString *platform; 
struct utsname systemInfo; 
uname(&systemInfo); 
platform = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; 

if ([platform isEqual:@"iPhone6,1"]||[platform isEqual:@"iPhone6,2"]){ 
[[UIApplication sharedApplication] setStatusBarHidden:YES 
              withAnimation:UIStatusBarAnimationFade]; 
} 
Смежные вопросы