UIFocusMovementHint是如何使用的



读取时https://developer.apple.com/documentation/uikit/uifocusmovementhint我很难理解在什么上下文中访问UIFocusMovementHint对象,并且可以读取movementDirection变量。有人能在一个简单的例子中使用这个变量吗?

我在16'29''的时候用这段视频中说的话尝试了很多东西,但我找不到真正令人满意的东西。

编辑

在向苹果公司的工程师提问后;A、 我意识到我做错了什么。这里有一个有效的解决方案。

使用变换特性

UIFocusMovementHint具有几个变换属性。一些是CCD_ 2,其可以使用CCD_。其他是直接与CGAffineTransform一起使用的向量及其性质。一旦获得CGAffineTransform,就可以将其应用于视图的transform属性(否则可以使用该层(。

在本例中,我将使用translation矢量。

容器视图

不需要更改要设置动画的视图的transform属性,而是需要在此视图中创建一个容器视图。这是因为转换会影响frame属性,这会使焦点引擎无法正确处理焦点移动(这是我的错误(。

因此,容器视图应该添加到要设置动画的视图中,并包含所有应该参与暗示动画的子视图。然后可以更改容器视图的transform属性以反映提示。

示例

用很多单词来解释一些很简单的东西!这是:

override func didHintFocusMovement(_ hint: UIFocusMovementHint) {
containerFocusView.transform = CGAffineTransform(
translationX: hint.translation.dx, 
y: hint.translation.dy
)
}

最后说明

我没有对所有的转换属性进行实验,但我相信它们的用法应该非常相似。

相关内容

  • 没有找到相关文章

最新更新