我使用:
为表格视图的单元格设置动画func animateCells(tableView: UITableView) {
tableView.reloadData()
let cells = tableView.visibleCells
let tableHeight: CGFloat = tableView.bounds.size.height
for i in cells {
let cell: UITableViewCell = i as UITableViewCell
cell.transform = CGAffineTransformMakeTranslation(0, tableHeight)
}
var index = 0
for a in cells {
let cell: UITableViewCell = a as UITableViewCell
UIView.animateWithDuration(animationDuration, delay: animationDelay * Double(index),usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
cell.transform = CGAffineTransformMakeTranslation(0, 0);
}, completion: nil)
index += 1
}
}
这仅适用于表格视图中的单元格。但是我也有一些带有标题的表,在这些情况下动画不起作用。如何在上面的动画代码中包含标题?谢谢。
答案 0 :(得分:2)
UITableView
中有两个标题视图。
这是UITableView
上方显示的附件视图。它可以像这样设置:
self.tableView.tableHeaderView = UIView()
您也可以从tableHeaderView
属性获取标题视图。
每个部分都可以有自己的标题视图。为了设置tableView(_:viewForHeaderInSection:)
的{{1}}部分的标题视图,必须实现。
您可以从UITableViewDelegate
的{{1}}获取部分的标题视图。
headerViewForSection(_:)
方法UITableView
根据the reference document返回let headerView = self.tableView.headerViewForSection(0)!
,但它必须在您的实现中返回tableView(_:viewForHeaderInSection:)
个对象。如果返回UIView
,则UITableViewHeaderFooterView
将返回UIView
。
headerViewForSection(_:)
我希望用这个解决你的问题。
答案 1 :(得分:2)
解决了tableView部分标题动画的问题:
// animate section header
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let numberOfSections = tableView.numberOfSections
let tableHeight: CGFloat = tableView.bounds.size.height
var index = 0
for i in 0...numberOfSections - 1 {
if (section == i) {
view.transform = CGAffineTransformMakeTranslation(0, tableHeight)
UIView.animateWithDuration(1.0, delay: 0.05 * Double(index),usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: { () -> Void in
view.transform = CGAffineTransformMakeTranslation(0, 0)
}, completion: nil)
}
index += 1
}
}
和细胞:
// animate cells
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
let numberOfSections = tableView.numberOfSections
let tableHeight: CGFloat = tableView.bounds.size.height
var index = 0
for i in 0...numberOfSections - 1 {
let numberOfCells = tableView.numberOfRowsInSection(i)
for j in 0...numberOfCells - 1 {
if (indexPath.section == i && indexPath.row == j) {
cell.transform = CGAffineTransformMakeTranslation(0, tableHeight)
UIView.animateWithDuration(1.0, delay: 0.05 * Double(index),usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: [], animations: {
cell.transform = CGAffineTransformMakeTranslation(0, 0);
}, completion: nil)
}
index += 1
}
}
}
感谢您的提示!!