Изменение только цвета тела UITableView или изменение только цвета строки состояния

Я хотел получить определенный цвет в строке состояния iOS, я понимаю, что он будет иметь цвет представления контроллеров сверху. И, следовательно, я могу получить это, применив цвет, который я хочу для строки состояния, к представлению таблицы, что будет выглядеть так

введите здесь описание изображения

Но когда в нем нет строк, тогда весь вид таблицы получает этот цвет (очевидно! но это не то, что я хочу)

введите здесь описание изображения

Есть ли способ придать цвет только верхней части таблицы, чтобы строка состояния получила этот цвет, или я могу изменить только цвет строки состояния. У меня есть

Просмотр внешнего вида строки состояния на основе контроллера

в Info.plist как NO .


person rajesh sukumaran    schedule 11.05.2016    source источник
comment
загрузите образ и добавьте его, или сделайте образ диска общедоступным   -  person Rajesh    schedule 11.05.2016
comment
@rajesh, вы можете изменить только цвет строки состояния на белый или черный.   -  person Muruganandham K    schedule 11.05.2016


Ответы (4)


Вы можете применить цвет фона к строке состояния, как показано ниже.

UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
    statusBar.backgroundColor = [UIColor redColor];
}

Использование приведенного выше кода в методе AppDelegate didFinishLaunchingWithOptions изменит цвет фона строки состояния всего приложения. Если вы хотите изменить цвет фона для определенных контроллеров представления, вам следует следовать подходу @Lion's.

Надеюсь это поможет.

person Surya Subenthiran    schedule 11.05.2016
comment
Это работает. Один вопрос, но я хочу, чтобы это произошло только для этого представления, как вернуться к оригиналу. - person rajesh sukumaran; 11.05.2016

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

Высота представления должна быть 20, а ширина должна быть равна ширине экрана.

и позиция должна быть (0,0).

Надеюсь, это поможет :)

person Ketan Parmar    schedule 11.05.2016
comment
где я должен добавить пользовательский вид? self.tableView.addSubview(topView) или self.tableView.superView?.addSubview(topView) - person rajesh sukumaran; 11.05.2016
comment
нет. в вашем контроллере представления. добавьте пользовательский вид с рамкой (0,0, self.view.frame.size.width, 20), а рамка вашего табличного представления должна (0,20, ширина, высота) - person Ketan Parmar; 11.05.2016

Вы также можете добавить одно окно в верхнюю строку состояния и изменить его цвет. Это будет выглядеть так:

// AppDelegate.Swift
let topWindow = UIWindow(frame: CGRect(....))
topWindow.backgroundColor = ...
window.addSubview(topWindow)
person Lumialxk    schedule 11.05.2016

На Свифте:

override func viewWillAppear(animated: Bool) {
    self.navigationController?.navigationBarHidden =  true

UIApplication.sharedApplication().statusBarHidden = false
UIApplication.sharedApplication().statusBarStyle = .LightContent

let statusBar: UIView = UIApplication.sharedApplication().valueForKey("statusBar") as! UIView
if statusBar.respondsToSelector("setBackgroundColor:") {
    statusBar.backgroundColor = UIColor.redColor()
}

}
person A.G    schedule 12.05.2016