是否有可能使UIImageView
成为焦点?或者我应该只使用UICollectionView
来获取所有可能的观点?
我试图覆盖canBecomeFocused
,但什么都没发生。
答案 0 :(得分:1)
我发现最简单的方法是将UIButton子类化为UIImageView(因为UIButton已经有了一个图像子视图)。你可能不需要我放在那里(重要的部分是在layoutSubviews中设置imageView?.adjustsImageWhenAncestorFocused = true)
class AtvImageButton:UIButton
{
override func awakeFromNib()
{
super.awakeFromNib()
contentMode = UIViewContentMode.ScaleAspectFit
contentHorizontalAlignment = .Fill
contentVerticalAlignment = .Fill
}
override func layoutSubviews()
{
imageView?.adjustsImageWhenAncestorFocused = true
imageView?.clipsToBounds = false
super.layoutSubviews()
}
override func canBecomeFocused() -> Bool
{
return enabled && super.canBecomeFocused()
}
}
答案 1 :(得分:0)
尝试将UIImageView包装在容器视图中,使容器视图可聚焦,并使用:
imageView.adjustsImageWhenAncestorFocused = true
imageView.clipsToBounds = false
这应该一次给您几个聚焦效果:
如果要改为实现自己的UIImageView焦点效果,则可以执行您所做的操作(重写canBecomeFocused = true),还可以添加:
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
coordinator.addCoordinatedAnimations({
self.transform = self.isFocused ? CGAffineTransform( scaleX:1.1, y:1.1 ) : .identity
}, completion: nil)
}
只知道adjustsImageWhenAncestorFocused选项是全部还是什么都没有。因此,您可以完全按原样采用所有四个系统聚焦效果,也可以完全失去所有这四个聚焦效果,然后自己实施所有聚焦效果。由于无法为所有实际目的重现闪光效果,因此通常最好坚持使用adjustsImageWhenAncestorFocused。