是否有可能使一个UIImageView
焦点?或者我应该只UICollectionView
对所有可能的视图使用 a ?
我试图覆盖canBecomeFocused
但什么也没发生。
是否有可能使一个UIImageView
焦点?或者我应该只UICollectionView
对所有可能的视图使用 a ?
我试图覆盖canBecomeFocused
但什么也没发生。
尝试将 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。
我发现的最简单的方法是继承 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()
}
}