gpt4 book ai didi

ios - 如果从 nib 加载,则 UITableViewCell 框架与 Storyboard 加载有所不同

转载 作者:行者123 更新时间:2023-11-29 05:12:52 24 4
gpt4 key购买 nike

我有一个带有 UITableView 的 UIViewController,每个 UITableViewCell 内部都有一个 UICollectionView。 View Controller 从一个基本的简单 nib 文件(内部带有 UITableView 的 UIView)加载,而自定义 UITableViewCell 从单独的 nib 文件加载。 UICollectionView 和 UITableViewCell 都必须动态调整大小。它可以工作,但是当最初加载 tableview 及其单元格时,在调用 cellForRowAtIndexPath 时它们似乎没有正确的帧大小,这会导致 collectionView 的大小不准确,因此UITableViewCell 的高度不适合其内容。在 cellForRowAtIndexPath 内部,它似乎采用了 nib 文件中显示的 tableview 的框架,而不是该设备上 tableView 的正确大小。如果我调用[tableView reloadData]或上下滚动,单元格的框架是正确的,因此collectionView高度和tableViewCell的高度都是正确的。

有趣如果我更改设置以便从 Storyboard加载 UIViewController,然后将相同的单元格作为原型(prototype)单元嵌入到 Storyboard的 UITableView 中...现在一切正常,并且UITableViewCell 现在在第一次传递时正确加载单元格的框架,因此我不需要调用 [tableView reloadData] 来让它正确调整每个单元格的大小。

我不确定为什么它的行为不同。理想情况下,我会使用 nib 解决方案,因为我想在不同的地方重用相同的单元格,并且无法将 UITableViewCell 从一个 Storyboard重用到另一个 Storyboard。

对于为什么 UITableViewCell 在从 nib 文件加载时与从 Storyboard 加载时在 cellForRowAtIndexPath 中尺寸不正确的任何猜测或想法?

最佳答案

我认为在您的情况下,当您使用 nib 文件时,它们会在 View Controller 的 View 大小根据模拟器发生变化之前进行渲染。并且由于viewcontroller的 View 大小不正确, View 中的tableview大小也是错误的。当您重新加载表格或滚动表格 View 时, View 大小会获取模拟器设备大小、真实大小。然后单元格适合表格。您可以看到,当您调试时; View 的大小等于 Storyboard中的设备大小。

关于ios - 如果从 nib 加载,则 UITableViewCell 框架与 Storyboard 加载有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59517158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com