调整视图的大小会使其他视图在 UITableViewCell 中反弹
Posted
技术标签:
【中文标题】调整视图的大小会使其他视图在 UITableViewCell 中反弹【英文标题】:Resizing a View makes other views to bounce in UITableViewCell 【发布时间】:2020-04-15 07:11:45 【问题描述】:我需要展开或折叠表格视图单元格及其内容。 为此,我正在使用 NSLayoutConstraints。虽然它完成了工作,但我在单元格中的其他视图中遇到了一些令人讨厌的布局问题。Here is a video.这是我的代码:
视图控制器:
extension ViewController: TableViewCellDelegate
func tableView(shouldExpand cell: TableViewCell)
tableView.performBatchUpdates(
cell.expand()
)
func tableView(shouldCollapse cell: TableViewCell)
tableView.performBatchUpdates(
cell.collapse()
)
TableViewCell:
func expand()
UIView.animate(withDuration: 0.57)
self.viewHeight.constant = 320
self.view.alpha = 1
self.layoutIfNeeded()
func collapse()
UIView.animate(withDuration: 0.57)
self.viewHeight.constant = 0
self.view.alpha = 0
self.layoutIfNeeded()
如何停止上视图停止调整大小?
【问题讨论】:
【参考方案1】:您可以使用 UIStackView 并仅显示和隐藏视图以进行折叠和展开。 UIStackView 将很容易处理并且会为您工作。
【讨论】:
你的意思是把上视图和下视图都放在一个堆栈视图中吗?我绝对可以试试。谢谢!!【参考方案2】:performBatchUpdates 用于根据数据源的变化对tableView
的变化进行动画处理。由于您没有对数据源进行任何更改,因此无需在 tableView.performBatchUpdates
块内进行动画处理。不用performBatchUpdates
试试。
func tableView(shouldExpand cell: TableViewCell)
cell.expand()
func tableView(shouldCollapse cell: TableViewCell)
cell.collapse()
【讨论】:
您好@Jithin,感谢您的回复。我试图在块外运行代码。但是该表不会以这种方式更新。 alpha 值会发生变化,但高度约束不会更新,单元格本身也不会。 :( ***.com/questions/59280032/… @KoushikMudi 你可以试试这个答案,它也会扩大表格,请看那个截图。希望对你有帮助。 @VipinPareek 感谢您的评论。您的代码显然可以工作,但这不会为单元格的帧更改设置动画。调用perfornBatchUpdates
时,表格视图会显示其子视图。在我的视频中,向上的部分需要进行一些修改,因为嵌套在其中的堆栈视图正在失去其实际高度。以上是关于调整视图的大小会使其他视图在 UITableViewCell 中反弹的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试在 Xcode 6.1 中调整情节提要中其他视图的大小时,为啥某些视图的框架变为 (0,0,0,0)
UITableViewAutomaticDimension 单元格在滚动或拉动刷新后调整大小