热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UITableViewReloadRows在iOS11.2中不自然地颠覆了TableView

如何解决《UITableViewReloadRows在iOS11.2中不自然地颠覆了TableView》经验,为你挑选了1个好方法。

通过调用更新iOS 11.2的新XCODE 9.2后出现了奇怪的问题

let indexPath = IndexPath(item: 0, section: 1)
self.tableViewHome.reloadRows(at: [indexPath], with: .none)

它导致整个TableView不必要的抖动,事先对这些代码非常好.

适用于iOS 11.2的GIF图像

在此输入图像描述

适用于iOS 11.1的GIF图像

在此输入图像描述

如何阻止这个Jerking,我必须在两个单元格中重新加载tableview中的一个单元格.

任何帮助将不胜感激.

谢谢



1> 小智..:

我的理解是,如果你真的想要使用自动调整大小(并且所有单元格大小不同),那么上述解决方案对iOS 11.2不起作用,所以我尝试的如下:

声明变量以存储单元格的高度

var cellHeightDictionary: NSMutableDictionary // To overcome the issue of iOS11.2

在viewDidLoad中初始化,

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = 125
    cellHeightDictiOnary= NSMutableDictionary()
}

并使用如下:

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    cellHeightDictionary.setObject(cell.frame.size.height, forKey: indexPath as NSCopying)
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    if cellHeightDictionary.object(forKey: indexPath) != nil {
        let height = cellHeightDictionary.object(forKey: indexPath) as! CGFloat
        return height
    }
    return UITableViewAutomaticDimension
}

这对我有用,希望这对你也有帮助


推荐阅读
author-avatar
mobiledu2502884483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有