2015-09-24 2 views
0

Так что мой статус бар в моем приложении в настоящее время выглядит следующим образом:IOS 8 делают статусные черный цвет и непрозрачны

1

И я предпочел бы это выглядело примерно так:

2 http://mojoimage.com/free-image-hosting-12/22iOS7_StatusBar-copy.png

Так, что это черный с белым текстом. На данный момент это не работает на этом конкретном экране, потому что фон не черный. И я уже установил Status Bar Style в pList до UIStatusBarStyleLightContent.

Я также добавить, что View является начальным ViewController И это не имеет UINavigationController встроенный в него:

EDIT: Это не дубликат, так как большинство других предыдущих решений устарели уже.

+0

@ChrisSlowik Нету, потому что те ответы от 2011 и больше не действительны в прошивке 8 – user1416564

+0

да вы правы. Вы должны установить свою строку состояния для освещения содержимого и поместить за ним черный вид. Если я правильно помню. –

ответ

3

Вы можете просто установить его на свет, а затем бросить по нему вид. Вам также придется учитывать ротацию устройства, если вы разрешите это в своем приложении.
Swift:

override func viewDidLoad() { 
    super.viewDidLoad() 

    let statusBG = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width, height: 21)) 
    statusBG.backgroundColor = UIColor.blackColor() 
    view.addSubview(statusBG) 
} 

Objective-C:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIView *statusBG = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 21)]; 
    statusBG.backgroundColor = [UIColor blackColor]; 
    [self.view addSubview:statusBG]; 
} 
+0

Но это уродливо на iPhoneX. Как его решить на iPhoneX? – Gank

+1

Это устаревший шаблон дизайна, которого следует избегать на iOS11. Не могу исправить уродство. Ознакомьтесь с Руководством по человеческому интерфейсу от Apple для получения более подробной информации о iPhone X Design. https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/ –

0

Потому что на IOS 6 или выше, строка состояния не полупрозрачным, так что лучше делать это на основе прошивкой версия. В вашем viewDidLoad:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { 
    UIView *statusBarView=[[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)]; 
    statusBarView.backgroundColor=[UIColor blackColor]; 
    [self.view addSubview:statusBarView]; 
} 

где SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO:

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 

Это даст вам строку состояния с черным фоном и белым текстом.

0

в приложении AppDelegateDidFininshLaunchingWithOptions метод напишите ниже код. Это помогает вашему контроллеру всех представлений. Вам не нужно добавлять код в каждый контроллер представления.

[UIApplication sharedApplication].statusBarHidden=NO; 
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) 
{ 
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 
    [application setStatusBarHidden:NO]; 
    self.window.clipsToBounds=YES; 
    self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20); 
} 
else 
{ 
    self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; 
    [application setStatusBarHidden:NO]; 
    self.window.clipsToBounds=YES; 
    self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20); 
} 

Тогда вы yourprojectName.plist дать

Status bar is initially hidden is NO 
View controller-based status bar appearance is YES 
Смежные вопросы