как анимировать заголовок раздела collectionview в приложении tvOS?

введите описание изображения здесь Необходимо анимировать заголовок раздела, когда фокусируется ячейка коллекции под заголовком. Точно так же, как если вы зайдете в приложение «фильмы itunes» на Apple TV и перейдете на вкладку «Главные фильмы», если вы посмотрите на плейлисты ниже, когда вы прокручиваете элементы, заголовок анимируется вверх и вниз, чтобы не перекрываться с выделенной ячейкой. любая помощь приветствуется ссылка на скриншот tvos


person ck8414    schedule 20.05.2016    source источник


Ответы (1)


Я не могу точно предоставить код; но это в основном то, что вы собираетесь делать.

1 - Создать посредника class headingRouter; целью которого будет служить посредником между заголовком scrollView (коллекцияView или tableView) и выбором ячейки. Экземпляр заголовочного маршрутизатора будет жить в ваших методах основного уровня collectionView. Вы можете использовать шаблон делегата, чтобы абстрагировать логику изображения для router, а затем для collectionView; соответствовать делегату, чтобы обновить рассматриваемое представление.

2 - Верхние и нижние колонтитулы - это то, что называется supplementary view; поэтому им можно назначить любой пользовательский подкласс uiView. В этом headerView; у вас должен быть метод, который принимает идентификатор, возможно, id, и изменяет отображаемое изображение. Вы можете анимировать это изменение с помощью затухания, если хотите, чтобы оно выглядело как iTunes.

3 - На вашем сфокусированном участке ячейки; у ячеек есть идентификатор, который назначается во время метода cellForRowAt в ваших методах делегата/источника данных. Когда сфокусирован конкретный вид; используя один из различных методов collection/tableView; вы хотите взять этот идентификатор; передайте его вашему headingRouter, который, в свою очередь, уведомит ваш заголовок, чтобы изменить его изображение на соответствующее изображение (возможно, хранящееся в кеше) на изображение, на которое вы фокусируетесь.

Это больше логика реализации; но вы не опубликовали никакого кода, так что конкретики не так много. Вы могли бы обойтись без класса Router, но это более чистое решение.

Ваше здоровье

person leahyjwilliam    schedule 28.03.2019
comment
спасибо, что ответили на этот вопрос спустя 3 года после того, как я опубликовал этот вопрос. Я уже уволился из этой компании, и эта проблема все еще существует ;-) - person ck8414; 08.05.2019