我正在尝试创建一个表格视图,用幻觉填充初始视图" realtime"每个单元格翻转然后显示其值(而不是默认显示)。我一直在修补这个问题好几个小时,似乎无法弄清楚如何在翻转发生和标签显示之间产生延迟。
我使用标签的isHidden值来确定它们何时显示。在我尝试将isHidden更改为true之后发生转换时,但似乎我只能在转换完成之前显示值,如果我不使用完成处理程序或完成处理程序动画根本没有显示。我的代码部分如下所示:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "testCell3", for: indexPath) as? FlipTableViewCell
else{
fatalError("The dequeued cell is not an instance of AnimationTableViewCell.")
}
cell.flipLabel.text = String(array[indexPath.row])
if(firstLoad){
cell.isHidden = true
}
return cell
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
firstLoad = false
var delay:Double = 0
for cell in self.tableView.visibleCells{
DispatchQueue.main.asyncAfter(deadline: .now() + 0.05*delay) {
UIView.transition(with: cell.contentView, duration: 0.8, options: .transitionFlipFromTop, animations: nil, completion:{ doneWork in
if doneWork {
let cellTest = cell as? FlipTableViewCell
cellTest?.isHidden = false
}
})
}
delay = delay + 1
}
}
override func viewWillAppear(_ animated: Bool){
super.viewWillAppear(animated)
tableView.reloadData()
}
这是TableViewCell:
class FlipTableViewCell:UITableViewCell {
@IBOutlet weak var flipLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
flipLabel.isHidden = false
flipLabel.alpha = 1
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}