我正在创建一个 tvOS 电影浏览器。此视图包含电影描述并显示 4 个内容:电影封面图像、电影描述文本、观看按钮和电影演员的集合视图(蓝色框)。PreferredFocusView 设置为 watchButton。但是,一旦我将焦点切换到它下方的集合视图,如果演员表太短,我将无法再次关注手表按钮。
最终,我知道我可以通过重新排列 UI 来修复它,使手表按钮直接位于第一个演员的上方,但我想知道是否有一种实际的方法来实现我想要的原始外观。
谢谢!
我正在创建一个 tvOS 电影浏览器。此视图包含电影描述并显示 4 个内容:电影封面图像、电影描述文本、观看按钮和电影演员的集合视图(蓝色框)。PreferredFocusView 设置为 watchButton。但是,一旦我将焦点切换到它下方的集合视图,如果演员表太短,我将无法再次关注手表按钮。
最终,我知道我可以通过重新排列 UI 来修复它,使手表按钮直接位于第一个演员的上方,但我想知道是否有一种实际的方法来实现我想要的原始外观。
谢谢!
为了解决这个问题,我在我的视图控制器中添加了一个焦点指南。
private var focusGuide: UIFocusGuide!
在 viewDidLoad 中:
// Create focus guide
focusGuide = UIFocusGuide()
view.addLayoutGuide(focusGuide)
focusGuide.leftAnchor.constraint(equalTo: header.imageView.leftAnchor).isActive = true
focusGuide.bottomAnchor.constraint(equalTo: header.imageView.bottomAnchor).isActive = true
focusGuide.widthAnchor.constraint(equalTo: header.imageView.widthAnchor).isActive = true
focusGuide.heightAnchor.constraint(equalTo: header.watchButton.heightAnchor).isActive = true