当前位置: 首页 > 面试题库 >

UITableView滚动时奇怪的布局行为更改

翁和颂
2023-03-14
问题内容

我有一个具有 自动高度的UITableView自定义UITableViewCell设计

该行为是在my的第一次加载中UIViewController,UITableView显示带有部分文本的标签。然后,当我滚动
到底部然后滚动到顶部时,得到了所需的高度和文本外观。

这是先滚动后再滚动的外观(这是
我的实现的正确外观,但我删除了一些Lorem文本):

编辑1:

Code:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 101 // much heigher than most cells. But no use.

在UI Builder中,UITableViewCell的“行高”设置为“默认”(未选中“自定义” )

在UI Builder中,UITableView的“行高”设置为“ 101”(也尝试将其设置为“ 0”但结果相同。)


问题答案:

使自动布局可以在UITableViewCell上工作是为了确保您具有约束所有子视图的约束,也就是说,每个子视图都应具有前导,顶部,尾部和底部约束。

此外,您需要从contentView 的顶部到底部明确的约束线。这可确保自动布局根据其子视图正确确定contentView的高度。

棘手的部分是,如果您缺少某些约束,Interface Builder通常不会警告您。运行项目时,自动布局不会简单地返回正确的高度。例如,它可能会为
单元格高度返回0 ,这表明您的约束需要更多的工作。

如果在处理自己的项目时遇到问题,请尝试调整约束,直到满足上述条件。

检查链接以获取详细信息:html" target="_blank">http : //www.raywenderlich.com/87975/dynamic-table- view-cell-height-ios-8-swift



 类似资料:
  • 我的约束布局的版本是。在我的布局中包含了一个工具栏之后,工具栏的左右两边都有空间,如下图所示 这是我的工具栏的代码 我以以下方式将其包含在我的布局中 我没有在布局文件的根元素中使用任何附加的填充或边距。 另一个奇怪的事情是,如果我编译或构建程序,我的代码会自动改变,比如 更改为

  • 在一个视图分页程序中,我有几个片段,其中一个片段使用嵌套的scrollview和一个header和一个RecycerView: 标记“header”代表了一个复杂的布局,我不想在这里发布,因为它扩展了代码。 当我在选项卡之间切换时,它会滚动到回收器视图。标题被隐藏了,我必须向上滚动才能看到它。 有什么原因吗?我不想在我的适配器中使用类型,如果我可以避免它。

  • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方

  • 我正在使用Mapstruct映射将一个POJO转换为另一个POJO模型 以下是mapstruct自动生成的方法 该方法基本上获取源POJO的映射,并将其转换为目标模型的映射。生成正在通过。 当我运行代码时,我在这个方法中得到了ClassCast异常:HeaderAttributeGenericDataTypeMaptoStringEnergiectAttributeDataMap 堆栈跟踪: 我还

  • 问题内容: 我想用标题栏创建一个简单的框,其中包含标题和一些工具按钮。我有以下标记: 这个可以解决吗? 问题答案: 在最外面的div中指定宽度。如果内容div中的宽度表示此框的总宽度,则只需将其添加到最外面的div中,然后(可选)将其从内容中删除,如下所示:

  • 我错过了什么? 为了便于阅读,这里提供了一个要点,并附带了一个测试用例:https://Gist.github.com/teyc/5668517