Я использую вид выбора, чтобы позволить пользователю выбрать цветовую тему для всего приложения.
Я планирую изменить цвет панели навигации, фона и, возможно, панели вкладок (если это возможно).
Я изучал, как это сделать, но не могу найти примеров Swift. Может ли кто-нибудь дать мне пример кода, который мне нужно будет использовать для изменения цвета панели навигации и цвета текста панели навигации?
Представление Picker настроено, я просто ищу код для изменения цвета интерфейса.
источник
Вот некоторые основные настройки внешнего вида, которые вы можете применять в приложении:
Подробнее об
UIAppearance
API в Swift вы можете прочитать здесь: https://developer.apple.com/documentation/uikit/uiappearanceисточник
Обновлено для Swift 3, 4, 4.2, 5+
Swift 4
Swift 4.2, 5+
Также можете проверить здесь: https://github.com/hasnine/iOSUtilitiesSource
источник
Просто вставьте эту строку
didFinishLaunchingWithOptions
в ваш код.источник
В AppDelegate это глобально изменило формат NavBar и удаляет нижнюю границу / границу (которая является проблемной областью для большинства людей), чтобы дать вам то, что я думаю, что вы и другие ищете:
Затем вы можете настроить файл Constants.swift , и он будет содержать структуру Style с цветами и шрифтами и т. Д. Затем вы можете добавить tableView / pickerView к любому ViewController и использовать массив «availableThemes», чтобы позволить пользователю изменять themeColor.
Прекрасная вещь в этом заключается в том, что вы можете использовать одну ссылку во всем приложении для каждого цвета, и она будет обновляться на основе выбранной пользователем «Темы», а без нее по умолчанию будет использоваться theme1 ():
источник
Чтобы сделать это на раскадровке (Инспектор Интерфейсного Разработчика)
С помощью этого
IBDesignable
мы можем добавить дополнительные параметры в Инспектор Интерфейсного РазработчикаUINavigationController
и настроить их на раскадровке. Сначала добавьте следующий код в ваш проект.Затем просто установите атрибуты для контроллера навигации на раскадровке.
Этот подход также можно использовать для управления цветом текста панели навигации из раскадровки:
источник
Свифт 4:
Отлично работающий код для изменения внешнего вида панели навигации на уровне приложения.
Удачного кодирования!
источник
работал на меня
источник
SWIFT 4 - Плавный переход (лучшее решение):
Если вы переходите от контроллера навигации, и вам нужно установить другой цвет на контроллере навигации, который вы выдвинули, вы хотите использовать
вместо того, чтобы поместить его в viewWillAppear, чтобы переход стал чище.
SWIFT 4.2
источник
В Swift 4
Вы можете изменить цвет панели навигации. Просто используйте этот фрагмент кода ниже
viewDidLoad()
Цвет панели навигации
Цвет текста панели навигации
Для iOS 11 большой заголовок панели навигации , вы должны использовать
largeTitleTextAttributes
свойствоисточник
appearance()
Функция не всегда работает для меня. Поэтому я предпочитаю создать объект NC и изменить его атрибуты.Также, если вы хотите добавить изображение вместо просто текста, это также работает
источник
Используйте API внешнего вида и цвет barTintColor.
источник
iOS 8 (Swift)
источник
Если вы настроили навигационный контроллер, вы можете использовать приведенный выше фрагмент кода. Так что в моем случае я использовал следующие фрагменты кода.
Swift 3.0, версия XCode 8.1
Текст навигационной панели:
Это очень полезные разговоры.
источник
Обновление Swift 4, iOS 12 и Xcode 10
Просто вставьте одну строку внутрь
viewDidLoad()
источник
В Свифт 2
Для изменения цвета в панели навигации,
Для изменения цвета в панели навигации элемента,
или
источник
Свифт 3
Это установит цвет панели навигации как цвет панели Facebook :)
источник
Swift 3 и Swift 4 совместимый Xcode 9
Лучшее решение для этого, чтобы сделать класс для общих панелей навигации
У меня есть 5 контроллеров, и название каждого контроллера меняется на оранжевый цвет. Поскольку у каждого контроллера есть 5 навигационных контроллеров, мне пришлось менять каждый цвет либо из инспектора, либо из кода.
Таким образом, я сделал класс вместо того, чтобы менять каждую панель навигации из кода, я просто назначил этот класс, и он работал на всех 5 способностях повторного использования кода контроллера. Вы просто должны назначить этот класс каждому контроллеру, и это все.
источник
iOS 10 Swift 3.0
Если вы не возражаете против использования быстрых фреймворков, используйте UINeraida, чтобы изменить фон навигации как
UIColor
илиHexColor
илиUIImage
и изменить текст кнопки навигации назад программно, полностью изменить цвет текста.Для
UINavigationBar
источник
Свифт 3
Простой вкладыш, который вы можете использовать в
ViewDidLoad()
источник
Эта версия также удаляет теневую линию 1px под панелью навигации:
Swift 5: поместите это в свой AppDelegate didFinishLaunchingWithOptions
источник
Я должен был сделать
в противном случае цвет фона не изменился бы
источник
Сначала установите для свойства isTranslucent navigationBar значение false, чтобы получить нужный цвет. Затем измените цвет навигационной панели следующим образом:
источник
Не забудьте установить состояние кнопки для .normal
PS iOS 12, Xcode 10.1
источник
topItem
решения. Это разочаровывает количество изменений, которые Apple продолжает вносить в то, как стили применяются к навигации.просто вызовите это расширение и передайте цвет, он автоматически изменит цвет навигационной панели
в представлении didload или в представлении появится вызов
self.navigationController? .setNavigationBarColor (цвет: <# T ## UIColor #>)
источник
источник
Я пишу это для тех, у кого все еще есть проблемы с решениями здесь.
Я использую Xcode версии 11.4 (11E146). Тот, кто работает на меня:
НО !, если вы установите barTintColor в раскадровке на любое другое значение, кроме «default», эти 2 строки кода не будут иметь никакого эффекта.
Поэтому будьте осторожны и верните значение по умолчанию barTintColor в раскадровке. О, Эппл ...
источник
Добавьте эти строки в ваш AppDelegate внутри функции didFinishLaunchingWithOptions:
эта строка для фона панели навигации.
эта строка означает, что если значение is isTranslucent равно false, при навигации будет отображаться белый цвет.
эта строка для ваших текстов и значков на панели навигации
эта строка нам, чтобы все сводилось к вашей панели навигации.
источник