Я пытаюсь реализовать UINavigationBar
, который меняет свою прозрачность при прокрутке UITableView
. Вначале навигационная панель должна иметь прозрачный фон, поэтому содержимое под ним должно быть видимым (появится изображение, для примера использую сплошной цвет):
Когда пользователь прокручивает табличный вид, прозрачность должна быть заменена сплошным цветом:
В представлении таблицы будут заголовки разделов, которые должны действовать как при использовании непрозрачной навигационной панели. Заголовки заголовков должны "прилипать" к панели навигации, как только они "касаются" ее снизу:
Мне не повезло с попыткой реализовать этот поток в приложении iOS.
Для начального состояния я устанавливаю свойство UINavigationBar
translucent
на YES
, и оба backgroundColor
и barTintColor
очищают цвет, что дает мне то, что я хочу.
Затем, когда пользователь прокручивает табличное представление, я обновляю backgroundColor
и barTintColor
до цвета с заданным альфа-компонентом, вычисленным на основе текущего смещения прокрутки. Для этого я использую протокол scrollViewDidScroll:
из UIScrollViewDelegate
. Тем не менее, он меняет только фон панели навигации, оставляя прозрачный фон состояния, что не то, что я хочу.
Я не могу найти другой способ сделать UINavigationBar
прозрачным без установки свойства translucent
в YES
. К сожалению, это влияет на то, как заголовки разделов действуют при прокрутке. Поскольку панель навигации является полупрозрачной, просмотры заголовков разделов скрываются ниже нее, когда они должны "приклеиваться" к панели, как на третьем скриншоте выше.
Я был бы признателен за любую помощь и подсказки о том, как создать панель навигации, которая действует как описанная или подобная в Objective-C или Swift.