Как расширение Bleiers DictionaryBindingList, я сделал небольшое изменение, чтобы позволить добавлять значения для перезаписывания существующих значений. Я использую этот метод с веб-узлом WAMP, поэтому он позволит мне обновлять значения, просто обновляя коллекцию, а затем мне нужно связать события со значениями.
public void Add(TKey key, TValue value)
{
if (Dictionary.ContainsKey(key))
{
int position = IndexOf(key);
Dictionary.Remove(key);
Remove(key);
InsertItem(position, new KeyValuePair<TKey, TValue>(key, value));
return;
}
base.Add(new KeyValuePair<TKey, TValue>(key, value));
}
Вы можете сделать это из info.plist:
1) «Просмотр внешнего вида строки состояния на основе контроллера» установлен на «НЕТ»
2) «Стиль строки состояния» установлен на «НЕТ» UIStatusBarStyleLightContent "
сделано
Я делаю это в iOS 9 и Swift 2.0, если я использую UINavigationController
self.navigationController?.navigationBar.barStyle = UIBarStyle.Black
И я делаю это, если я использую модальный переход
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
Это похоже на проблему с текущей сборкой Xcode и iOS 7.
Некоторый связанный контент на форумах разработчиков Apple находится в поиске UIStatusBarStyleLightContent в «iOS 7 Beta Livability» на форумах разработчиков Apple * (в настоящее время 32 сообщения).
Я наткнулся на это, пытаясь установить его на облегченную версию.
(Это просто продолжение ответа Аарона.)
В качестве альтернативы, вы можете отказаться от появления строки состояния на основе контроллера вида:
View controller-based status bar appearance
в NO
в вашем Info.plist
. [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Примечание. Этот метод устарел в iOS9. Вместо этого используйте preferredStatusBarStyle
в UIViewController. (см. Библиотека разработчиков Apple )
Ничего из этого не помогло мне, так что вот рабочее решение ...
В Info.plist
добавьте строку:
UIViewControllerBasedStatusBarAppearance
и установите значение NO
.
Затем в AppDelegate в didFinishLaunchingWithOptions
добавьте эти строки:
[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
Вот Руководство / Инструкция Apple об изменении строки состояния. Only Dark & amp; свет (в то время как & черный) разрешены в строке состояния.
Вот - Как изменить стиль строки состояния:
Если вы хотите установить стиль строки состояния, уровень приложения затем установите UIViewControllerBasedStatusBarAppearance
в NO
в вашем `.plist 'файл.
Если вы хотите установить стиль строки состояния, на уровне контроллера представления выполните следующие действия:
UIViewControllerBasedStatusBarAppearance
в YES
в файле .plist
, если вам нужно установить стиль строки состояния только на уровне UIViewController. В функции добавления viewDidLoad - setNeedsStatusBarAppearanceUpdate
переопределить предпочитаемыйStatusBarStyle в вашем контроллере представления.
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Установите значение .plist в соответствии с уровнем настройки стиля строки состояния.
Вот несколько хитростей, чтобы изменить / установить цвет фона для строки состояния во время запуска приложения или во время viewDidLoad вашего контроллера представления.
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
return true
}
}
or
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
}
}
Вот результат:
Я использую Xcode 6 beta 5 в проекте Swift для приложения iOS 7.
Вот что я сделал, и это работает:
info.plist:
Ответ обновлен для для Xcode GM Seed:
В Info.plist
положить View controller-based status bar appearance
как NO
В проекте , установите:
В ViewDidLoad:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Если вы хотите получить тот же результат в Swift, вы можете использовать этот код в файле AppDelegate.swift:
UINavigationBar.appearance().barStyle = .BlackTranslucent
И текст вашей строки состояния будет белым :-)!
UINavigationController
iOS 13 является подкласс UIViewController
(кто знал рџ™ѓ)!
Поэтому при представлении контроллеров представления встроил в контроллеры навигации, Вы действительно не представляете встроенные контроллеры представления; Вы представляете контроллеры навигации! UINavigationController
, как подкласс UIViewController
, наследовался preferredStatusBarStyle
и childForStatusBarStyle
, который можно установить, как желаемый.
Любой из следующих методов должен работать:
info.plist
, добавляет следующее свойство: UIUserInterfaceStyle
(иначе. "Стиль Пользовательского интерфейса") литий> <литий> Значение - Свет литий> Переопределение preferredStatusBarStyle
в [1 113]
preferredStatusBarStyle
( документ ) - предпочтительный стиль строки состояния для контроллера представления Подкласс или расширяется UINavigationController
class MyNavigationController: UINavigationController {
override var preferredStatusBarStyle: UIStatusBarStyle {
.lightContent
}
}
ИЛИ
extension UINavigationController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
.lightContent
}
}
Переопределение childForStatusBarStyle
в [1 117]
childForStatusBarStyle
( документ ) - Названный, когда системе нужен контроллер представления для использования для определения стиля строки состояния , "Если контейнерный контроллер представления получает свой стиль строки состояния из одного из его дочерних контроллеров представления, [переопределяют это свойство] и возврат тот дочерний контроллер представления. Если Вы возвращаете ноль или не переопределяете этот метод, стиль строки состояния для сам используется. Если возвращаемое значение из этого метода изменения, назовите setNeedsStatusBarAppearanceUpdate () методом".
Подкласс или расширяется UINavigationController
class MyNavigationController: UINavigationController {
override var childForStatusBarStyle: UIViewController? {
topViewController
}
}
, ИЛИ
extension UINavigationController {
open override var childForStatusBarStyle: UIViewController? {
topViewController
}
}
можно возвратить любой контроллер представления, который Вы хотели бы выше. Я рекомендую одно из следующего:
topViewController
([1 121]) ( документ ) - контроллер представления наверху стопки навигации литий> <литий> visibleViewController
([1 123]) ( документ ) - контроллер представления, связанный с в настоящее время видимым представлением в интерфейсе навигации (подсказка: это может включать "контроллер представления, который был представлен модально сверху самого контроллера навигации") литий> Примечание: Если Вы решаете разделить на подклассы UINavigationController
, не забудьте применять тот класс к своим военно-морским контроллерам через инспектора идентификационных данных в IB.
P.S. Это работает над iOS 13 рџЋ