ios11 - Xcode 9.0 和 iOS 11 后 UITableView/UICollectionView 滚动看起来不稳定

标签 ios11 swift4 xcode9 ios10.3

我的 iPhone 应用程序中有四个页面。所有 4 个页面都是 UIViewController 的子类。两个页面都有 UITableView 来显示项目列表。两个页面都有 UICollectionView 来显示数据。所有数据均在 AFNetworking 的帮助下从网络服务获取。它进展顺利,没有任何问题。我使用所有必需和推荐的方法显示了 tableView 和 collectionView Storyboard中的自定义单元格。

在我将 Xcode 8.3 更新到 Xcode 9.0 和 iOS 11 之前,它曾经在模拟器和设备中显示平滑滚动。我尝试使用 this 中的解决方案。还有其他可能的解决方案,但不能解决我的问题。最令人困惑的部分是,我没有更改 tableView 或 collectionView 的一行代码,它开始显示出不稳定的效果。

看起来它每秒都在等待一些东西,并且滚动时有明显的暂停,尽管我在显示数据时没有任何复杂的逻辑。我只是显示网络服务响应中的数据。我也有旧分支,它曾经在 Xcode 8.3 中显示平滑滚动,但当我在 Xcode 9.0 运行相同的代码时,它显示不稳定的滚动。

我使用 macOS 10.12.6、Xcode 9、Swift 4 以及 iOS 11 和 iOS 10.3 模拟器。

最佳答案

我们找到了解决此问题的方法!如果你只是实现

-[UITableView tableView:estimatedHeightForRowAtIndexPath:]

并返回您的

-[UITableView tableView:heightForRowAtIndexPath:]

一切都会顺利。

更新: 事实证明,问题的核心在于,当您使用 Xcode 8 分配新的 UITableView 时,UITableView.estimatedRowHeight 的默认值为 0,而当您使用 Xcode 9 分配新的 UITableView 时,默认值为 -1,即 UITableViewAutomaticDimension。将其设置回 0 可解决该问题。

关于ios11 - Xcode 9.0 和 iOS 11 后 UITableView/UICollectionView 滚动看起来不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47009700/

相关文章:

uitableview - 带有 UIRefreshControl 的导航栏中的 iOS 11 UISearchController 导致布局故障

ios - 如何保存实现 Codable 的自定义对象

ios - 在 Swift4 中,替换 navigationItem.leftBarButtonItem 会调整不需要的大小

ios - 核心数据 : annotation: Failed to load optimized model at path with Xcode 9 GM

ios - 选择搜索栏时,导航栏下的容器 View 没有向上移动

ios - 无法在 iOS 11 GM 中更改多个文本字段颜色

MFMailComposeViewController 的导航栏中的 ios 11 问题

swift - 查找 NSFont 大小以适合特定宽度

swift - View 旋转后移动 View , View 中触摸位置错误

swift - 使用视觉和机器学习 API 的 IOS 11 中的 Iphone 6 和 iPad 应用仅崩溃