我有一个带有动画图像的UImageview。 我在代码中添加了uiimageview,它是CollectionViewCell的一部分 当用户触摸单元格时动画停止,为什么会发生这种情况?
代码:
var images: [UIImage] = []
for i in 0...10 {
images.append(UIImage(named: "image\(i)"))
}
let i = UIImageView(frame: CGRect(x: xPos, y: yPos, width: 200, height: 200))
i.animationImages = images
i.animationDuration = 0.5
i.startAnimating()
i.contentMode = UIViewContentMode.Center
i.userInteractionEnabled = false
self.addSubview(i)
答案 0 :(得分:2)
在自定义集合视图单元类中,编写以下方法来修复问题
func setSelected(selected:Bool) {
}
func setHighlighted(higlighted:Bool) {
}
答案 1 :(得分:2)
Swift 4.0版本:
override open var isSelected: Bool
{
set {
}
get {
return super.isSelected
}
}
override open var isHighlighted: Bool
{
set {
}
get {
return super.isHighlighted
}
}
答案 2 :(得分:1)
使用空的setter覆盖isSelected,isHighlighted将解决此问题,但是它将丢失要设置的这两个属性。我可以通过在UICollectionViewDelegate中的didSelectItemAt处调用imageView.startAnimating()来解决此问题。
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let item = items[indexPath.item]
if item.hasGIF {
let cell = collectionView.cellForItem(at: indexPath) as! ItemCell
cell.imageView.startAnimating()
}
}
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
let item = items[indexPath.item]
if item.hasGIF {
let cell = collectionView.cellForItem(at: indexPath) as! ItemCell
cell.imageView.startAnimating()
}
}
答案 3 :(得分:1)
就我而言,我无法禁用选择或使用此处之前发布的任何解决方案。我不需要突出显示单元格,因此我通过下面的委托方法禁用它以返回 false,从而阻止调用 stopAnimating() 方法。这是我在 UICollectionViewCell 中使用 KingFisher 的 AnimatedImageView 时遇到的问题。
func collectionView(_ collectionView: UICollectionView, shouldHighlightItemAt indexPath: IndexPath) -> Bool {
return false
}
<块引用>
用于动画的 UIImage 对象数组。 var highlightAnimationImages: [UIImage]?突出显示视图时用于动画的 UIImage 对象数组。完成一个图像循环所需的时间。
答案 4 :(得分:0)
如果您不希望任何交互,那么以下将是解决此问题的最快方法:
collectionView.allowsSelection = false
答案 5 :(得分:-1)
在下面的TableView Use代码中,可以解决触摸取消,触摸移动等问题
- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath {
[cell startAnimation];
}