gpt4 book ai didi

ios - 表格 View 行高变化时如何添加动画?

转载 作者:搜寻专家 更新时间:2023-11-01 06:01:22 25 4
gpt4 key购买 nike

我正在尝试制作一个 FAQ View Controller ,我知道有一个名为“FAQView”的 pod 可以制作这个 FAQ 页面,但我需要自定义,所以我自己制作。我希望我的最终结果是这样的

enter image description here

展开行时有一点动画,我需要添加那个动画。我的这个 FAQ 的 TableView 是这样的

enter image description here

我想在某个单元格的行高从 80 变为 140 时添加动画

这是我的代码,我的 View Controller 代码:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

var FAQs = [FAQ]()

@IBOutlet weak var tableView: UITableView!

var selectedRow : Int?
var cellIsExpanded : Bool = false {
didSet {
tableView.reloadData()
}
}

override func viewDidLoad() {
super.viewDidLoad()

tableView.dataSource = self
tableView.delegate = self
getFAQ()
}

func getFAQ() {

}

func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return FAQs.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "FAQCell") as! TableViewCell
cell.FAQData = FAQs[indexPath.row]
cell.expandButton.tag = indexPath.row

// to implement FAQCellDelegate
cell.cellDelegate = self

return cell
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

var height:CGFloat = CGFloat()

if cellIsExpanded == false {
height = 80
} else {
if indexPath.row == selectedRow {
height = 160
} else {
height = 80
}
}
return height
}
}

extension ViewController : FAQCellDelegate {
func didPressButton(isExpanded: Bool, tag: Int) {
cellIsExpanded = isExpanded
selectedRow = tag

}
}

我的 Table View Cell 代码如下所示

import UIKit

protocol FAQCellDelegate : class {
func didPressButton(isExpanded: Bool, tag: Int)
}

class TableViewCell: UITableViewCell {

@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var answerLabel: UILabel!
@IBOutlet weak var expandButton: UIButton!

var expanded = false
var FAQData : FAQ! {
didSet {
questionLabel.text = FAQData.question
answerLabel.text = FAQData.answer
}
}

weak var cellDelegate: FAQCellDelegate?

@IBAction func expandButtonDidPressed(_ sender: Any) {

if expanded == true {
expanded = false
cellDelegate?.didPressButton(isExpanded: expanded, tag: expandButton.tag)

} else {
expanded = true
cellDelegate?.didPressButton(isExpanded: expanded, tag: expandButton.tag)

}
}
}

最佳答案

设置“cellIsExpanded”后,不要重新加载表格 View ,而是调用以下方法。使用以下代码

在 iOS 11 中,

- (void)performBatchUpdates:(void (NS_NOESCAPE ^ _Nullable)(void))updates completion:(void (^ _Nullable)(BOOL finished))completion

iOS 10 或以下

- (void)beginUpdates;
- (void)endUpdates;

关于ios - 表格 View 行高变化时如何添加动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49248438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com