Я пытаюсь создать табличное представление, которое заполняет начальное представление в иллюзии «в реальном времени», где каждая ячейка переворачивается, а затем отображается ее значение (в отличие от простого отображения по умолчанию). Я возился с этим уже много часов и не могу понять, как создать задержку между тем, когда происходит переворот, и когда отображается метка.
Я использую значение 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:
класс 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
}
}