iOS 10 GM 嵌入 UITableView 和 UICollectionView contentSize 错误且滚动指示器不显示

Posted

技术标签:

【中文标题】iOS 10 GM 嵌入 UITableView 和 UICollectionView contentSize 错误且滚动指示器不显示【英文标题】:iOS 10 GM embedded UITableView and UICollectionView contentSize wrong and scroll indicators not showing 【发布时间】:2016-09-12 04:22:11 【问题描述】:

我的 UI 有一个带有两个嵌入式视图的视图控制器,如下所示:

-----------------
|        |      |
|  List  | Grid |
|        |      |
-----------------

列表视图有一个UITableView,网格有一个UICollectionView。两者都在 ios 9 中运行良好。

在 iOS 10 中,我有两个问题:

两个视图都滚动到其内容之外。内容过大。 两者都没有显示滚动指示器。

其他人在嵌入式视图控制器中遇到滚动视图的这些问题并且知道如何解决它?

注意:我觉得这可能与旧的(新的)自动调整大小/弹簧和支柱系统有关,以及在情节提要中作为自定义对象添加的视图被调整为 1000x1000 的奇怪行为。

【问题讨论】:

我遇到了同样的问题。更新到 ios10,现在我的收藏视图的内容大小为 1340。 你先生是个传奇。我为此苦苦思索了很长时间。我想知道为什么它在使用 iOS 10 时停止工作。也许苹果框架的调用不同? 您找到解决方法了吗?我在第一次加载时遇到 UITableViewCell 的每个子视图都设置为 1000x1000。 【参考方案1】:

问题是我使用另一个视图(在本例中为工具栏)的 .frame 属性来计算 tableView 的 contentInsets。该视图的框架在viewDidLoad 中被查询(可能在设置之前)并返回1000x1000。我已经用约束替换了对 .frame 属性的所有查询,它帮助我解决了所有这些 iOS 10 大小问题。

【讨论】:

是的,它为我修复了它。 (你应该接受你自己的答案)【参考方案2】:

之前请致电layoutIfNeeded。 这个问题出现在 XCode 8 中。 我在willDisplayCell 有同样的问题。

【讨论】:

【参考方案3】:

这是 Xcode8 的问题,只需将故事板属性“Opens In”更改为“XCode 7.x”并恢复为 XCode 7。

您的视图在恢复后将获得正确的值。

【讨论】:

以上是关于iOS 10 GM 嵌入 UITableView 和 UICollectionView contentSize 错误且滚动指示器不显示的主要内容,如果未能解决你的问题,请参考以下文章

找回 Swift Playgrounds? iOS 10 GM 警告

Xcode 8.0 GM iPhone 模拟器 (iOS 10) 崩溃

UItableview indexPathForCell - iOS6 'v' iOS7

为啥嵌入 UINavigationController 时不再显示 UITableView

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

使用 iOS 4.2 gm 种子在 iPad 上绘制文本需要很多时间