Подтвердить что ты не робот

Анимация/масштабирование настраиваемого пользовательского вида в tvOS

У меня есть пользовательский UICollectionViewCell в моем приложении tvOS. В нем есть UIImageView и некоторые UILabel. Я могу заставить ячейку сфокусироваться, внедряя протокол UIFocusEnvironment без каких-либо проблем, но я не могу понять, как настроить мою настраиваемую ячейку на сфокусированный внешний вид. (Высота и реагирование на движение пользователя на сенсорной панели).

Я знаю свойство UIImageView adjustsImageWhenAncestorFocused, но это только повышает изображение в моей ячейке, а не всей ячейке.

Есть ли способ заставить tvOS применить (по-видимому) стандартный вид/поведение фокуса к моему пользовательскому представлению или мне нужно сделать все это вручную?

Спасибо заранее.

4b9b3361

Ответ 1

Обновление в tvOS 12. 0+: ознакомьтесь с новыми классами, которые Apple представила в TVUIKit ! Теперь вы можете создавать собственные представления с таким фокусирующим поведением!

----

Я задавал тот же вопрос на форумах разработчиков Apple. Сотрудники Apple ответили:

Для пользовательских видов вы должны будете реализовать внешний вид фокуса самостоятельно. В методе обновления фокуса вы можете сделать такие вещи, как применить преобразование и использовать UIMotionAffect API.

- (void)didUpdateFocusInContext:(UIFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator {
    if (context.nextFocusedView == self) {
       // handle focus appearance changes
    }
    else {
       // handle unfocused appearance changes
    }
}

Я думаю, что было бы весьма полезно создать расширение UIView чтобы иметь возможность применять такое же поведение к любому пользовательскому представлению.

Может быть, они хотели бы, чтобы мы реализовали более интересные способы отображения фокуса для пользователя? Это было бы хорошей причиной, чтобы легко включить это только для UIImageView (не говоря уже о том, что это поведение также добавляет имитированный свет поверх UIImageView, что прекрасно, но, возможно, имеет смысл только для изображений).