我正在制作一款tvOS应用。我有一个集合视图单元格,它有一个UIImageView。我在界面构建器中选中“在聚焦时调整图像”,这样我就可以使用系统为图像提供的聚焦效果。问题是我还在为图像设置边框。当视图获得焦点并且图像放大时,边框不会随图像放大。任何想法如何在视图聚焦时更新边框的尺寸?
答案 0 :(得分:1)
我认为你应该将你的imageView放在UIView的对象中,然后给这个视图边框。之后你应该覆盖" didUpdateFocus"方法并根据需要制作动画。 看到, 就我而言,我已将imageView放入" viewBg"对象并为此对象提供动画。
func viewAnimation(view:UIView , isNormal:Bool)
{
UIView.animate(withDuration: 0.5, animations: { () -> Void in
if isNormal{
view.transform = CGAffineTransform(scaleX: 1.0, y: 1.0);
}
else{
view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3);
}
})
{ (finished) -> Void in
}
}
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
if(context.previouslyFocusedView != nil)
{
if (context.previouslyFocusedView is testCell)
{
let cell:testCell = context.previouslyFocusedView as! testCell
self.viewAnimation(view: cell.viewBg, isNormal: true)
}
}
if(context.nextFocusedView != nil)
{
if (context.nextFocusedView is testCell)
{
let cell:testCell = context.nextFocusedView as! testCell
self.viewAnimation(view: cell.viewBg, isNormal: false)
}
}
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell:testCell = collectionView.dequeueReusableCell(withReuseIdentifier: "testCell", for: indexPath) as! testCell
cell.imgIcon.image = UIImage(named:arrayIconImages.object(at: indexPath.row) as! String)
cell.viewBg.layer.borderColor = UIColor.black.cgColor
cell.viewBg.layer.borderWidth = 10.00
return cell
}
因此,通过这种方式,您可以在图像视图中为边框添加动画。