在tvOS中设置焦点自定义视图的动画/缩放

Ara*_*yan 15 focus tvos

UICollectionViewCell我的tvOS应用程序中有自定义.它有一个UIImageView和一些UILabels.通过实现UIFocusEnvironment协议没有任何问题,我可以让细胞集中,但我无法弄清楚如何给我的自定义细胞聚焦外观.(提升和响应用户在触摸板上的移动).

我知道它UIImageViewadjustsImageWhenAncestorFocused属性,但这只能提升我单元格中的图像,而不是整个单元格.

有没有办法让tvOS将(看似)标准的焦点外观/行为应用到我的自定义视图中,还是我必须手动完成所有操作?

提前致谢.

sah*_*ziz 16

我在Apple开发者论坛上问了同样的问题.Apple员工回答:

对于自定义视图,您必须自己实现焦点外观.在焦点更新方法中,您可以执行诸如应用变换和使用UIMotionAffect之类的操作 API之类的操作.

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

我认为UIView扩展能够将相同的行为应用于任何自定义视图是非常有帮助的.

也许他们希望我们实施更有趣的方式来向用户展示焦点?这是一个很好的理由,只能为此轻松实现UIImageView(更不用说这种行为也会增加模拟光线UIImageView,这是美丽的,但可能只对图像有意义).