读取时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
)
}
最后说明
我没有对所有的转换属性进行实验,但我相信它们的用法应该非常相似。