我们可以在不重新加载的情况下调整UITableViewCell的大小吗?
我们可以在点击其中的按钮时更改UITableViewCell
的内容大小而无需重新加载吗? 当我执行reloadData()
或reloadCell()
UITableView
闪烁,我想避免这种闪烁。
您应该使用beginUpdates()和endUpdates()来更改UITableViewCell的内容大小,在这种情况下,将为tableView中的每个单元调用heightForRowAtindexPath并更新TableviewCell的高度 。 对于iOS> 10 ,您应该更喜欢performBatchUpdates(_:completion 🙂而不是beginUpdates()和endUpdates()。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { self.tableView.beginUpdates() self.tableView.endUpdates() }
了解更多信息
https://appengineer.in/2018/07/11/resize-uitableviewcell-size-without-fluctuation-and-jerk/
https://developer.apple.com/documentation/uikit/uitableview/1614908-beginupdates
如果它只是一个单元格,您可以维护引用并进行必要的更改,并为该tableView
调用beginUpdates()
和endUpdates()
。
或者,如果它是很多单元格,您可以在单元格内部拥有观察者并发布来自另一个来源的通知。 例:
class CustomTableViewCell { init() { // Your initialization NotificationCenter.default.addObserver(self, selector: #selector(resizeCell), name: NSNotification.Name("YourNotificationName"), object: nil) } @objc func resizeCell() { //Your cell layout changes }
然后,每当您为此观察者发布通知时,将调用所需的方法,并且将更新具有此观察者的所有单元格。
NotificationCenter.default.post(name: NSNotification.Name.init("YourNotificationName"), object: nil) tableView.beginUpdates() tableView.endUpdates()
- 单击联系人按钮而不是设备的默认视图时,在自定义表viewcontoller中显示iOS设备中的所有联系人
- 在目标c中将NSData转换为NSString
- iOS App Today Extension未上传到物理设备
- LyriCode现在可以购买了
- 使用Core Audio控制单声道播放输出
- 如何从iOS中的现有框架创build静态库?
- 如何在Swift 3中使用@IBInspectable分别控制UIView的圆角?
- 在viewboard中将view.bottom约束到superview.bottom而不是bottomLayoutGuide
- 正确地抓取自定义表格单元格中的UIButton的IndexPath.row?