2016-09-28 3 views
1

У нас есть так много вопросов, когда мы поворачиваем панель состояния на белый цвет, но я хочу знать, как я могу превратить ее в белый или черный в соответствии с содержимым под строкой состояния, такой же, как у iOS 9-дюймовое музыкальное приложение, возможно ли сделать это изменение динамически с любым api или мне нужно вручную определить цвет строки состояния?изменить цвет строки состояния в соответствии с содержимым под ним

Это, как я превращаюсь его белым сейчас (который не то, что я хочу):

В info.plist назначая NO к этому View controller-based status bar appearance. то в моем app delegate'sdidFinishLaunchingWithOptions:

UIApplication.shared.statusBarStyle = .lightContent 

ответ

1

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

Вы можете проверить, что UIColor темнее или не ниже кода.

extension UIColor 
{ 
    func isLight() -> Bool 
    { 
     let components = CGColorGetComponents(self.CGColor) 
     let brightness = ((components[0] * 299) + (components[1] * 587) + (components[2] * 114))/1000 

     if brightness < 0.5 
     { 
      return false 
     } 
     else 
     { 
      return true 
     } 
    } 
} 

Сообщите мне, если у вас есть вопросы или задайте вопрос по тому же адресу.

+0

спасибо, что ответил. оцениваю ваше усилие, я понимаю, как я собираюсь проверить темноту цвета, но я понятия не имею, как я собираюсь получить цвет statusBar's background –

+0

По умолчанию в баре состояния он имеет четкий цвет фона. Таким образом, вы получаете только цвет с объекта или вида, который показывался за строкой состояния. – MinuMaster

+0

если у вас есть какие-либо проблемы, укажите более подробную информацию о вашем контроллере uiview ... – MinuMaster