我想在我的UICollectionView中设置更改动画。我将collectionView作为@IBOutlet
:
@IBOutlet weak var collectionView: UICollectionView!
集合视图重新加载(所以我可以更改每个单元格的alpha),如下所示:
var bulkAwardMode = false;
@IBAction func bulkAwardToggleClicked(sender: UIButton) {
if(bulkAwardMode == false) {
bulkAwardMode = true
} else {
bulkAwardMode = false
}
dispatch_async(dispatch_get_main_queue(), {
self.collectionView.reloadData()
})
}
但由于这不是动画,我尝试将reloadData()
行更改为self.collectionView.reloadSections(NSIndexSet(index: 0))
,但这只会导致错误attempt to create view animation for nil view
崩溃。
UIView.animateWithDuration
块中,但也失败了。
答案 0 :(得分:2)
您可以尝试:
collectionView.performBatchUpdates({ () -> Void in
// here you can insert ,delete and animate cells
}) { (success) -> Void in
//completion block
}
答案 1 :(得分:0)
使用UITableViewDelegate
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,forRowAtIndexPath indexPath: NSIndexPath) {
UIView.animateWithDuration(0.4, animations: { () -> Void in
cell.alpha = self.bulkAwardMode
})
}
重新加载数据时会调用此函数。
否则,您可以获得可见的单元格:
@IBAction func bulkAwardToggleClicked(sender: UIButton) {
if(bulkAwardMode == false) {
bulkAwardMode = true
} else {
bulkAwardMode = false
}
var visibleCells = tableView.visibleCells
for cell in visibleCells {
UIView.animateWithDuration(0.4, animations: { () -> Void in
cell.alpha = self.bulkAwardMode
})
}
}