UIFocusGuide不能在tvOS

时间:2016-07-19 14:25:17

标签: uicollectionview tvos apple-tv

基于这篇文章: UICollectionViewCell to UIButton Focus in tvOS,我添加了UIFocusGuide,因此当用户位于collectionview的右侧时,可以选择左侧按钮。

使用此代码:

focusGuide = UIFocusGuide();
focusGuide.preferredFocusedView = btClick
view.addLayoutGuide(focusGuide)
focusGuide.topAnchor.constraintEqualToAnchor(collectionView.topAnchor).active = true
focusGuide.bottomAnchor.constraintEqualToAnchor(btClick.bottomAnchor).active = true
focusGuide.leadingAnchor.constraintEqualToAnchor(collectionView.leadingAnchor).active = true
focusGuide.widthAnchor.constraintEqualToAnchor(collectionView.widthAnchor).active = true

在我的例子中,我添加了一个由Jack Cox创建的有用的code,它显示了“隐形”'布局指南,一切似乎都很好,因为布局从collectionView的顶部开始,到达按钮底部。

但它不起作用,如果用户位于collectionView的左侧,则只能选择按钮,在此图像上,您只能从第1项和第6项开始按钮。

enter image description here

我在github here上做了一个小例子,我不知道自己做错了什么。

1 个答案:

答案 0 :(得分:3)

我已经想通了,错误是用collectionView的整个尺寸创建焦点现在我在collectionView下方创建了一个焦点指南并设置了preferredFocusedView按钮。

使用此代码:

focusGuide = UIFocusGuide();
focusGuide.preferredFocusedView = btClick
view.addLayoutGuide(focusGuide)

//Modified the size of the UIFocusGuide
focusGuide.topAnchor.constraintEqualToAnchor(btClick.topAnchor).active = true   
focusGuide.rightAnchor.constraintEqualToAnchor(collectionView.rightAnchor).active = true

focusGuide.widthAnchor.constraintEqualToAnchor(btClick.widthAnchor, multiplier: 8).active = true
focusGuide.heightAnchor.constraintEqualToAnchor(btClick.heightAnchor).active = true

现在指南看起来像这样: enter image description here

我只是将更改提交给github,也许它可以帮助其他任何人。