问题标签 [uitableviewautomaticdimension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1246 浏览

ios - 使用 UITableViewAutomaticDimension 时如何更改 UitableviewCell 中 UIView 的高度约束

在此处输入图像描述

我在 UITableViewCell 中有一个 UIView ,当用户点击“更少/更多”按钮时需要改变它的高度

我的代码是

0 投票
0 回答
89 浏览

ios - 从 url 加载图像后调整 Table View Cell 自定义视图约束

在我的应用程序中,我有一个uitableview其单元格高度由autolayout UITableViewAutomaticDimension.

单元格包含一个图像,其高度由NSLayoutconstraint连接到单元格的出口调整。

图片是从 URL 加载的。有时 URL 会返回“无图像”。此时,我需要将高度约束更改为零。

如果图像可用,我需要调整高度为 200 的约束。图像是从后台线程加载的。

但是,当我在从网络加载图像后尝试更新约束时,它不起作用。

请提出解决这种情况的方法。

0 投票
0 回答
100 浏览

ios - 具有 reloadRows 能力的动态表格单元格

通过从 API 接收数据,我需要编写一个动态表单。这在我的脑海中被翻译成一个带有标签和输入字段的单元格的表格视图。

任务完成,单元格根据约束动态调整大小,一切都很好。当某些单元格中的某些输入更改了以下代码时:

这更新了我的行,新值在格式化等后正确显示。

问题:

当表单变得更大并且跨越的空间超过一个屏幕时,基本上使表格可滚动发生了一个巨大的问题。当表格滚动一点点时,使用reloadRows制作了一个有问题的表格滚动动画。

答案基本上是:如果你要使用,不要使用UITableViewAutomaticDimensionin 。heightForRowreloadRows

问题是,有些行有多行标签,或者需要以某种方式动态调整大小。看来我必须手动计算,但我不知道如何。除非..我错过了什么?真的希望我是

编辑:有人在评论中提到,还有其他方法可以在不重新加载行的情况下更新字段。这可能是一种解决方法,但我不知道其他方法是什么

0 投票
0 回答
1287 浏览

ios - 带有自动 sectionHeaderHeight 的 iOS 11 UITableView 错误可能会导致动画出现故障并在 tableview 顶部留下损坏的部分

在开发我最新的应用程序时,我偶尔会遇到我的 tableview 渲染问题,似乎我的 tableview 单元格没有足够的空间来适应每个部分。

直到最近,我一直在努力可靠地重现这个问题,在用尽我能想到的一切之后,我决定将这个 bug 的基本原理克隆到一个测试应用程序中,我最终设法用它重现了一个类似的问题,所以我终于找到了似乎成为错误的原因。

我的主应用程序使用自定义部分标题视图,并且需要自动高度尺寸行和部分标题,因为我包含动态内容,其中包括可以增长的文本,如果需要,它们都可以多行显示。在我的主应用程序中调试问题时,我很快尝试用默认的 tableview 部分标题替换我的自定义部分标题视图,并且仍然能够重现问题,所以这个测试应用程序使用带有自动 sectionHeaderHeights 的部分标题,我意识到这很奇怪,但同样自定义视图会出现问题,它仅使用普通标题会导致一个更简单的示例。

我已将我的项目副本上传到位于此处的 zip 文件中。

以及两个视频显示我的测试应用程序中的工作流工作正常,然后被自动 sectionHeaderHeight 破坏。这些视频在这里

下图显示了应用程序正常显示 2 个测试部分及其行之间的区别

工作截图

然后用浮动的“第 2 节”标题中断第 2 节中的一行。

破碎的屏幕截图

实际的相关代码在项目的 TableViewController 中

您可以看到类常量 setAutomaticDimensionSectionHeaderHeight 可以设置为使 tableView.sectionHeaderHeight 初始化为 UITableViewAutomaticDimension。如果设置为自动,则会出现上述视频中显示的错误,即

  • 使用条形按钮明显切换部分时
    • 新的“第 2 节”标题立即出现在其所需位置
    • 现有的“第 2 节”标题及其行都通过它向下滑动到正确的位置
  • 当通过不可见地切换部分时
    • 转到下一个视图控制器(通过选择表格行)并使用其切换表格视图部分按钮
    • 并返回到 tableview
    • 重复此操作,以便在 tableview 不在屏幕时隐藏第 1 部分及其行
      • 显示一个虚拟的“第 2 节”标题浮动在添加第 1 节时的位置。
      • 此虚拟标题附加到 tableview 并随之滚动,但当您将其滚动到视图顶部时,不会将其他真实部分标题推开

动画故障是我只在这个测试应用程序中注意到的,因为在我的主应用程序中,我总是在导航控制器的某些子视图中重现对屏幕外 tableview 的更改。尽管如前所述,浮动标题视图已经被发现,并且使我的应用程序看起来很糟糕,实际上通过隐藏一些 tableview 行来严重破坏它。当我第一次看到它时,我没有意识到标题是错误的并且浮动我认为这是我的 tableview 的其他问题。

我可能会在 Apple 上记录一个雷达,因为它看起来很破,但我想看看是否有人有任何想法。我见过一些人谈论自动截面高度的一般问题,并建议您只动态计算截面高度的大小。如果我可以相信自动布局在这一点上已经解决,那么我认为这是我可以尝试的我猜想通过在我的 sectionView 中添加组件视图的高度来做到这一点?

除此之外,我刚刚看过其他一些问答系列,例如

那个谈论可能试图将estimatedSectionHeaderHeight(和estimatedRowHeight)设置为0,我刚刚在我的测试应用程序中尝试过,它似乎确实“解决了”这个问题。后一个链接还引用了早期的 iO​​S 11 发行说明

表格视图现在默认使用估计高度,这也意味着单元格和部分页眉/页脚视图现在默认为自定大小。estimatedRowHeight、estimateSectionHeaderHeight 和estimatedSectionFooterHeight 属性的默认值现在是UITableViewAutomaticDimension,这意味着表格视图选择了一个估计的高度来使用。如果可能,您仍应为每个属性提供更准确的估计,这是您对实际高度平均值的最佳猜测。如果您在使用 iOS 11 SDK 构建应用程序时存在行为不同的现有表格视图代码,并且您不想采用自调整大小,则可以通过将估计高度设置为 0 来禁用估计高度来恢复之前的行为。每个估计的高度属性。(30197915)

这让我尝试只注释掉全部估计的SectionHeaderHeight 行以使用新的默认 iOS 11 行为。这似乎也行得通,并且通过这种描述听起来更可取,因为我知道我确实想要自我调整大小。注释虽然说你应该自己提供估计,当我这样做时确实会导致这些错误,所以在这个阶段苹果的建议似乎不好。

我需要让我的主应用程序再次恢复正常,看看这是否能解决问题。我确实记得,当第一次获得动态高度部分和行时,似乎需要将这些估计属性设置为某些东西才能真正让我的自动布局和多行文本标签正常工作以填充所需的空间(我可能在时间虽然我正在与所有参数搏斗,试图让事情正常进行)。当我可以很好地了解这些部分的估计大小通常是多少时,将其设置为 0 似乎是错误的,将其留空以采用默认的自我调整大小似乎是正确的,尽管我想如果我在早期的 iO​​S 上发布代码可能需要调整,因为可能无法很好地工作。

对此的任何更多想法将不胜感激!

干杯!

编辑

经过进一步测试,我似乎对将高度设置和估计高度设置为 0 修复事物过于乐观。我只能通过没有不适合我的主要应用程序用例的动态高度部分标题来解决问题

我通过并测试了各种选项的所有组合,结果如下

从 sectionHeaderHeight 的角度来看,不同的估计SectionHeaderHeights

  • tableView.sectionHeaderHeight = 0
    • 没有估计高度 == 0、45 或自动尺寸的标题
  • tableView.sectionHeaderHeight = 60
    • 标题都具有恒定的 60 高度,没有 UI 错误
  • tableView.sectionHeaderHeight = UITableViewAutomaticDimension
    • 没有标题,或者当估计的 headerheight 为 0 时 viewForHeaderCalled
    • 如果估计的 headerheight 设置为数字或自动尺寸,则标题有错误

从具有不同 sectionHeaderHeights 的估计 sectionHeaderHeight 角度

  • tableView.estimatedSectionHeaderHeight = 0
    • 没有将 sectionHeaderHeight 设置为 0 的标题或自动维度没有调用 viewForHeader。
    • headers 没有 headerHeight=60 的错误
  • tableView.estimatedSectionHeaderHeight = 45
    • 没有 sectionHeaderHeight == 0 的标题
    • headers 固定为 60,没有 sectionHeaderHeight=60 的错误
    • 标题自动调整大小,带有 sectionHeaderHeight==Automatic Dimension
  • tableView.estimatedSectionHeaderHeight = UITableViewAutomaticDimension
    • 如果 sectionHeaderHeight==0, Automatic Dimension, 带有错误的标题
    • 在 sectionHeaderHeight=60 的情况下将标题固定在 60 且没有错误

基本上没有任何组合可以解决此问题,但保留了具有动态高度部分标题的能力

0 投票
2 回答
1487 浏览

swift - 如何遍历所有 UITableView 部分?

我正在尝试转换具有多个部分和动态行的 UITableView。

我目前正在尝试遍历 UITableView 的所有子视图。我正在尝试将每个子视图插入到一个容器 UIView 中,我可以将它们全部组合起来以组成一个 UIView 代表特定高度限制的一个页面,我可以在其中动态添加页脚。

基本上,目标是遍历所有部分,并将每个单元格的所有视图组合成一个大 UIView,该 UIView 代表该部分,包括部分标题。

这样我以后就可以轻松地将每个 UIView 转换为特定的 PDF 页面。就好像我只是直接将 UITableView 转换为 PDF 一样,我会在不需要的地方切页。

0 投票
2 回答
4076 浏览

ios - 从服务器下载图像后动态制作表格视图单元格高度

我有一个单元格,我现在在其中显示从服务器下载的图像。现在我用静态高度显示图像,但现在我想像 facebook 和 instagram 一样制作动态图像。例如,如果我上传图像 320 * 100,那么我的单元格需要变为 300*100。如果需要,还建议更改服务器端我正在使用 afnetworking 图像加载类。

这是我的细胞设计。 在此处输入图像描述

编辑: 我尝试了给定的解决方案,但现在的问题是,当第二次进入cellforindexpath方法时,单元格会随着 jerk 调整大小。这只会发生在第一个单元格中。

0 投票
2 回答
1590 浏览

ios - 使用 textView 文本大小使 tableview 单元格扩展

为此我研究了很多教程但我无法找到解决我的问题的方法

我想在表格单元格上显示 textView。并且 Cell 应该随着用户在 textView 中输入的文本展开。

我发现有两种方法可以做到这一点

第一:-

第二种方式:-

删除自动尺寸码

但在此我检查了然后我在 heightForRowAtIndexPath 方法中创建单元格,然后 textview 高度不合适。并且自动调整高度并不完全有效。

请提出相同的解决方案。提前致谢。

0 投票
2 回答
93 浏览

ios - TableView 单元格高度不根据第一次重新加载时的 collectionview 高度

我知道这已经在很多线程中被问到了,但是没有一个解决方案对我有用。问题场景是:我在表格视图单元格中有一个集合视图。集合视图的约束如下:Collectionview 顶部、前导、尾随和底部约束到 superview 和 heightconstraint(优先级 999)。将集合视图的高度更改为:

单击按钮,重新加载 tableview,当打印 collectionview 高度约束值时,它实现了,但 tableview 单元格没有得到准确的内容大小。但是当我滚动时,tableview 单元格会得到确​​切的大小。

PS:也尝试使用:

0 投票
1 回答
55 浏览

uitableview - 使用 UITableViewAutomaticDimension 根据 UITableViewCell 中的文本长度设置标签的宽度和高度

我需要一个带有这样的单元格的 UITableView: 在此处输入图像描述 我尝试过,结果是这样的: 在此处输入图像描述

我将 UITableViewAutomaticDimension 与 Autolayout 一起使用(将标签固定到超级视图的 4 侧并且不提供高度约束),并且能够为单元格提供动态高度。但我还想要根据文本大小调整标签的宽度(见第一张图片)。

任何帮助将不胜感激。谢谢。

0 投票
0 回答
30 浏览

ios - 使用 TableViewCell 自动布局捕获 UIImageView 边界/帧大小

原型细胞

我在表格视图中使用附加的原型单元布局。每个单元格都使用自动布局调整大小:

tableView.rowHeight = UITableViewAutomaticDimension

“标语”是一个字符串,根据字符串的长度设置单元格的高度。给定更大的长度 UIImageView 的高度也会调整大小。ImageView 设置为各种具有不同大小和纵横比的图像。我想根据 ImageView 的开始宽度(不变)以及结果高度和图像的纵横比来调整图像的大小。

设置两者的代码非常简单。

cell.taglineLabel.text = 标语 cell.recipeImageView.image = 图像

在 tableView cellForRowAt 函数中,我首先在代码中设置标语,然后是 Image。但是,如果我尝试调整图像大小并检查边界或帧大小,则大小就是原始大小。我假设 autosize 在 func 之后执行。因此,我无法确定大小。

有没有办法在设置标语后强制自动调整大小,所以我可以看到我必须使用的框架/边界大小?