我在TableView中有三个单元格。 它在第一个单元格上有一个按钮,当按下它时,第一个单元格的垂直尺寸会扩大。
在ViewController中:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.section == 1 {
return 0
}
else if indexPath.section == 0 {
return CGFloat(expandedHeight) //700 //500
}
else if indexPath.section == 2 {
return 240
}
return 133
}
//I've modified some of my code, but it works this way.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "one", for: indexPath) as! one
return cell
}
else if indexPath.section == 1 {
let cell = tableView.dequeueReusableCell(withIdentifier: "two", for: indexPath) as! two
return cell
}
else if indexPath.section == 2 {
let cell = tableView.dequeueReusableCell(withIdentifier: "thr", for: indexPath) as! thr
return cell
}
return UITableViewCell()
}
func ExpandedButtonClick(_ height: Int)
{
tableView.beginUpdates()
expandedHeight = height // 500 700 switch
tableView.endUpdates()
}
在TableViewCell中(一个):
@IBAction func btnClickExpanded(_ sender: Any)
{
if let myViewController = parentViewController as? ViewController
{
if constraintExpend.constant == 500
{
constraintExpend.constant = 700
myViewController.ExpandedButtonClick(700)
}
else
{
constraintExpend.constant = 500
myViewController.ExpandedButtonClick(500)
}
}
}
一切正常,但是有问题。
只有我看到的屏幕部分应该动画,但是整个屏幕都在移动。看到这个令人不安。
如果我只想对扩展部分进行动画处理?
我想在固定屏幕的同时进行扩展。
答案 0 :(得分:0)
我很难找到它,因为问题有点不同。
总而言之,我找到了完美的答案。
@Sujan Simha reloadData() of UITableView with Dynamic cell heights causes jumpy scrolling
在我的问题中,ExpandedButtonClick函数
func ExpandedButtonClick (_ height: Int)
{
expandedHeight = height
tableView.beginUpdates ()
tableView.endUpdates ()
tableView.layer.removeAllAnimations ()
tableView.setContentOffset (tableView.contentOffset, animated: false)
}
这很好用!