UIImageView 未聚焦于 tvOS

问题描述 投票:0回答:3

我有以下

UIViewController
,我正在故事板中做。

我在这里面临的问题是,当我尝试在电视遥控器上向右滑动时,我的

UIImageView
没有获得任何焦点。事实上没有焦点事件发生,它尝试放入一些日志

 override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator)

但是没有更新焦点事件。早些时候,我在故事板中直接将

UIImageView
添加到
self.view
上,但我在某处读到
UIImageView
本身不可聚焦,所以我将我的
UIImageView
放在另一个
UIView
中,但它仍然没有获得任何焦点。我已对齐
UIView
的顶部边缘,其中包含
UIImageView
UITextView

任何帮助将不胜感激

顺便说一句,我也尝试使用 UIFocusGuide 进行操作,但这也不起作用。我认为我不需要使用 UIFocusGuide 因为它是基本的右滑动焦点。

ios swift uiimageview storyboard tvos
3个回答
10
投票

UIImageView
默认是不可聚焦的,并且不会获得聚焦效果,你可以做两件事来使其可聚焦。

  1. 子类
    UIImageView
    并在子类中覆盖
    canBecameFocused
    和 返回
    YES
    ,然后覆盖
    didUpdateFoucsInContext
    并更新焦点状态的外观,例如焦点是否变大或改变颜色等。
  2. 第二个选项是将其添加到可聚焦的视图中,然后设置
    imageView.adjustImageWhenAncestorFocused = YES
    并在
    clipToBounds = NO
     上设置 
    superview

因此,在您的情况下,当您将 imageView 添加到视图时,该视图应该从 canBecameFocused 返回 YES/True 。


2
投票

@C_X 是对的。最重要的是,如果将

UIImageView
添加到
self.view
那么不要忘记子类
self.view
并重写
canBecameFofused
方法。


0
投票

现在可以非常轻松地在 AppleTV 中聚焦图像视图,并包含所有效果:

您的图像将成为表视图或集合视图的一部分。然后设置即可

adjustsImageWhenAncestorFocused = true

仅此而已。

© www.soinside.com 2019 - 2024. All rights reserved.