Как установить два цвета в панели навигации? - PullRequest
0 голосов
/ 21 ноября 2018

Есть ли способ разбить панель навигации на две части или нужно добавить какой-либо пользовательский вид, чтобы добавить два цвета в панель навигации, как показано ниже -

Если я поставлю код ниже -

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

self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "triangle"),for:.default)

enter image description here

Ответы [ 4 ]

0 голосов
/ 21 ноября 2018

Вы должны изменить фоновое изображение панели навигации следующим образом:

if condition {
    navigationController?.navigationBar.setBackgroundImage(#imageLiteral(resourceName: "bg1"), for: .default)
} else {
    navigationController?.navigationBar.setBackgroundImage(#imageLiteral(resourceName: "bg2"), for: .default)
}

, где bg1: bg1

и bg 2: bg2

и результат:

Result

Имейте в виду:

  • Вы можете раскрасить изображение в коде, если вам нужен более динамический диапазон цветов.
  • Вы можете использовать несколько imageView s за панелью навигации и устанавливать для них цвета.(Один для левой части и один для правой).И скрыть фоновое изображение панели навигации.Так что иллюзия выглядит так же.
0 голосов
/ 21 ноября 2018

Вы можете нарисовать необходимое градиентное изображение (или два разных цвета без градиента) сначала с помощью быстрого кода, а затем установить его в заголовок.

Создание изображения с помощью средства визуализации изображений

Используйте метод image(actions:) для создания изображения (объект UIImage) с помощью средства визуализации изображений.https://developer.apple.com/documentation/uikit/uigraphicsimagerenderer https://developer.apple.com/library/archive/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/BezierPaths/BezierPaths.html

https://stackoverflow.com/a/30761714/8238512

Чтобы установить созданное изображение выше, вы уже знаете

Используйте сгенерированный выше image установить navigationBar

self.navigationController?.navigationBar.setBackgroundImage(< *useAboveGeneratedImage* >),for:.default)
0 голосов
/ 21 ноября 2018

Я бы предложил создать собственную панель навигации.Сделайте UIView и добавьте несколько делегатов для кнопок «Назад», меню гамбургера (если требуется).

0 голосов
/ 21 ноября 2018

Конечно, заранее создайте двухцветное изображение или нарисуйте его в коде и наберите setBackgroundImage(_:for:barMetrics:).

https://developer.apple.com/documentation/uikit/uinavigationbar/1624968-setbackgroundimage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...