在tvOS

时间:2015-09-21 16:52:45

标签: focus tvos

我的tvOS应用中有自定义UICollectionViewCell。它有一个UIImageView和一些UILabel s。通过实现UIFocusEnvironment协议可以毫无问题地让单元格得到集中,但我无法弄清楚如何为我的自定义单元格提供重点外观。 (提升和响应用户在触摸板上的移动)。

我知道UIImageView的{​​{1}}属性,但这只会提升我单元格中的图像,而不是整个单元格。

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

提前致谢。

1 个答案:

答案 0 :(得分:16)

更新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上添加模拟光,这很漂亮,但可能只对图像有意义)。