当单元格被聚焦时,无法更改子视图的alpha

时间:2015-11-18 01:09:18

标签: swift focus tvos

我有一个简单的imageView添加到自定义UICollectionViewCell。我在声明时初始化它:

let likeIcon = UIImageView()

然后我在我的班级'初始化程序中设置属性:

  likeIcon.image = UIImage(named: "heart_empty")!
  likeIcon.alpha = 0.0
  addSubview(likeIcon)

没什么太疯狂的。我希望最初隐藏imageView,然后在单击单元格时可见。

我有一个简单的方法,我选择单元格时调用它(它还没有动画):

func toggleLikeButtonAnimated() {

    likeIcon.frame = likeIconFrame()
    likeIcon.alpha = 1.0
}

但图标没有显示。

  1. 如果我将最初的likeIcon.alpha = 0.0注释掉,则图标会显示为已选中或未选中,所以它就在那里
  2. toggleLikeButtonAnimated绝对称为
  3. 框架是正确的框架
  4. 我唯一可以想到的,因为这真的很奇怪,焦点引擎的某些东西正在干扰alpha变化。

    我现在在单元格中有这个代码:

     // MARK: -- Focus
    override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
        super.didUpdateFocusInContext(context, withAnimationCoordinator: coordinator)
    
        coordinator.addCoordinatedAnimations({ () -> Void in
            if self.focused {
                self.focusItem()
            } else {
                self.unfocusItem()
            }
            }) { () -> Void in
        }
    }
    
    func focusItem() {
    
        self.overlay.alpha = 0.0
    }
    
    
    func unfocusItem() {
    
        self.overlay.alpha = 0.6
    }
    

    overlay位于图标下方,因此不应干扰其可见性。所以我尝试了这个:

    // MARK: -- Focus
        override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
            super.didUpdateFocusInContext(context, withAnimationCoordinator: coordinator)
    
            coordinator.addCoordinatedAnimations({ () -> Void in
                if self.focused {
                    self.focusItem()
                } else {
                    self.unfocusItem()
                }
                }) { () -> Void in
            }
        }
    
        func focusItem() {
    
            self.overlay.alpha = 0.0
            self.likeIcon.alpha = 1.0
        }
    
    
        func unfocusItem() {
    
            self.overlay.alpha = 0.6
            self.likeIcon.alpha = 0.0
        }
    

    likeIcon在细胞聚焦时动画化,在未聚焦时动画化。但这不是我想要的,似乎焦点引擎的动画在选择时阻止我的alpha更改。

    关于如何修复的任何想法?

1 个答案:

答案 0 :(得分:0)

根据您的描述,您希望最初隐藏imageView,然后在单击UICollectionViewCell时可见,但它确实无效。当你设置UICollectionViewDelegate时,你必须调用reloadData函数,就像UITableView.Maybe你可以尝试使用它来单击cell.Solve你问题。