2013-12-22 4 views
1

У меня есть некоторые контроллеры просматривать с панели инструментов в верхней части и выглядеть следующим образом enter image description hereIOS 7 Строка состояния фон

Как я могу заполнить строку состояния фона, чтобы соответствовать панели инструментов фона поэтому его матча новый IOS 7 стиля?

ответ

8

вам нужно добавить subview в делегат приложения и изменить цвет по своему вкусу. вот пример кода, который сидит в applicationdidfinishLaunchingWithOptions

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 

    // Override point for customization after application launch. 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { 
     UIView *addStatusBar = [[UIView alloc] init]; 
     addStatusBar.frame = CGRectMake(0, 0, 320, 20); 
     //change this to match your navigation bar or view color or tool bar 
     //You can also use addStatusBar.backgroundColor = [UIColor BlueColor]; or any other color 
     addStatusBar.backgroundColor = [UIColor colorWithRed:0.973/255. green:0.973/255. blue:0.973/255. alpha:1]; 
     [self.window.rootViewController.view addSubview:addStatusBar]; 
    } 
    return YES; 
} 

посмотрите на комментарии. вы можете использовать любой тип цвета в addStatusBar.backGroundColor в соответствии с цветом, который вам нужен. обратите внимание, что цвет с красным здесь просто создает черный фон, измените его на все, что вам нужно. для темно-серого цвета заменить, что со следующим кодом:

addStatusBar.backgroundColor = [UIColor colorWithRed:85.0/255.0 green:85.0/255.0 blue:85.0/255.0 alpha:1]; 

редактирование:

для изменения цвета строки состояния в отдельных видах, которые вы просто подключить в следующем коде (который будет иметь доступ вида, который вы хотите изменить) в ViewDidLoad метод сразу после [super viewDidLoad];, который должен изменить цвет строки состояния именно в этом окне вы поместите код в

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { 
    UIView *addStatusBar = [[UIView alloc] init]; 
    addStatusBar.frame = CGRectMake(0, 0, 320, 20); 
    addStatusBar.backgroundColor = [UIColor colorWithRed:0.973/255. green:0.973/255. blue:0.973/255. alpha:1]; 
    [self.view addSubview:addStatusBar]; 

edit1:.

при попытке добавить подвид на верхней части панели пилить в навигационном контроллере, вы должны дважды положение подвида, что-то вроде следующего:

UIView *addStatusBar = [[UIView alloc] init]; 
    addStatusBar.frame = CGRectMake(0, -20, 320, 20); 
    addStatusBar.backgroundColor = [UIColor colorWithRed:127.0/255. green:0.0/255. blue:127.0/255. alpha:1]; 
    [self.view addSubview:addStatusBar]; 
    [self.navigationController.navigationBar addSubview:addStatusBar]; 

, а также вам нужно добавить подвид пока еще подпункт навигационной панели навигационных контроллеров. Я устанавливаю цвет фона подвью в фиолетовый, но вы можете это изменить.

+0

Это работает только для rootViewController. Как установить его на уровне приложения, для всех контроллеров? – user623396

+0

@ user623396, для установки цвета строки состояния (таким образом, есть другие способы установить его). Я просто добавляю subview в верхнюю часть строки состояния с координатой и размером. он работает так же, как и на уровне контроллера, но вам нужно получить доступ к представлению, а не к rootviewcontroller. возможно, это случай, если вы хотите изменить цвет строки состояния в разных представлениях, чтобы иметь другой цвет строки состояния. Я изменил один и тот же код, чтобы работать над уровнем контроллера в моем редактировании сообщения. сообщите мне, если это то, что вы ищете или нуждаетесь в дополнительной помощи. –

+0

@XCode_Monkey благодарит за ваш ответ. Проблема в том, что добавление подобного вида будет помещено под панель навигации, а не вверху экрана. – user623396

Смежные вопросы