2016-09-26 4 views
0

Прокрутка в моем UITableViewController с несколькими элементами делает ячейку отображаемой за моим UIStatusBar. Я попытался сделать это, используя этот метод:UITableViewController и UIStatusbar

var bounds = self.view.bounds 
    bounds.origin.y -= 20.0; 
    self.view.bounds = bounds 
    // Create a solid color background for the status bar 



    let statusFrame = CGRect(x: 0, y: -20, width: bounds.size.width, height: 20) 
    let statusBar = UIView(frame: statusFrame) 
    statusBar.backgroundColor = UIColor.red 
    self.view.addSubview(statusBar) 

, который даст мне красную полосу перед прокруткой. Он исчезает после небольшой прокрутки. Я также попытался сделать contentInset таблицы top вверх до UIApplication.shared.statusBarFrame.height, но сделал то же самое.

Важно сохранить Navbar. Также мой TableViewController встроен в UINavigationController

Любые идеи?

+0

Как насчет состояния при завершении прокрутки, все еще скрыть панель или показать? И какова ваша платформа, только iOS 8 выше или вся версия? – ronan

+0

ios8 и выше. Он должен быть твердым все время. будь то прокрутка или нет. @ronan – JVS

+0

Вы просто хотите изменить цвет фона в строке состояния на красный, и убедитесь, что он не будет изменен автоматически, не так ли? – ronan

ответ

1

Одним из способов может быть, refactor UITableViewController и сделать его UITableView и добавить верхнее ограничение ниже строки состояния.

Другой способ изменить статус бар цвет, как:

func setStatusBarBackgroundColor(color: UIColor) { 
    if let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView { 
     statusBar.backgroundColor = color 
    } 
} 

Но будьте осторожны, так как это частный апи. Ваше приложение может быть отклонено.

+0

Я не уверен, как использовать эквивалент в swift. как при использовании double valueForKey – JVS

+1

@JVS Проверьте обновленные фрагменты кода. – Xchord

+0

Я получаю NSUnknownKeyException в statusBar – JVS

0

Наконец нашел ответ:

создать собственный UIView и добавить его мнение navigationController:

let rect = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, 
    height: UIApplication.shared.statusBarFrame.height) 

    let bar = UIView(frame: rect) 
    bar.backgroundColor = UIColor.white 

    navigationController?.view.addSubview(bar) 

работает как шарм.

1

Согласно вашей цели, вы можете просто скрыть строку состояния.

override var prefersStatusBarHidden: Bool { 
    return true 
} 

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

  • Нет связанных вопросов^_^