gpt4 book ai didi

ios - 具有自动布局的 UITableCell 配置多行 UILabel 被截断

转载 作者:行者123 更新时间:2023-11-28 21:07:29 25 4
gpt4 key购买 nike

我正在努力让一些多行标签在 tableview 单元格内运行。我已经摆脱了这个问题中描述的根本无法可靠工作的堆栈

UILabel inside nested UIStackViews inside UITableViewCell sometimes truncating

我在对那个问题的评论的帮助下修正了我的一个观点,但另一个观点对我不起作用,即使在移动到自动布局非堆栈 View 设置之后也是如此。然后我最终将我无法使用的单元格移动到使用类似布局的 View 中,并达到了我在同一 View 中有两个单元格的地步,一个有效,一个无效。我已将其导出到我已上传的新测试应用程序中 here

在这个应用程序中有一个简单的表格 View ,其中有 2 个单元格。一个单元格可以正确显示大型多行文本并根据需要展开单元格。正如您在此处看到的那样,另一个单元格突然停止并截断了多行标签

app simulator screenshot

在我看来,这两个单元格的约束条件几乎完全相同,所以我很困惑为什么一个单元格有效而另一个单元格无效。这是他们的约束的概述

constraints for cells

有一些约束没有安装,因为我一直在尝试找出导致其中一个单元无法工作的原因。

如果有人能向我解释是什么导致这两个单元格的行为不同,或者更重要的是为什么其中一个标签没有填充它的表格单元格,我将不胜感激,因为我花了几个小时寻找和就是想不通。

干杯!

最佳答案

编辑:

首先要解释哪里出了问题...

Cell2 中右侧的“Tags 标签”有一个明确的 Preferred Width = 300 .我不知道内部结构,所以不能确切地说出发生了什么,但我的印象是自动布局会采用 Preferred Width在计算文本边界框高度时考虑值,然后继续约束、内容、固有大小等。

只需取消选中该显式选项即可解决问题。


原答案:

我发现从头开始一个新的 Cell 比尝试修改您设置的约束更容易,所以...这将希望是可重现的。

准备:添加新的“Cell3”类;对代码进行基本编辑以适应 Cell3。如果我为标签值创建一些变量并设置元素的背景颜色以便于目视检查和测试,我也会发现事情会更容易。

第一步:添加新的原型(prototype);紫色背景; TableViewCell3 类和“Cell3”重用 ID;垂直拉伸(stretch)它以使其足够高以供使用(它不会影响运行时高度)。

第 2 步:添加 UIView对于左侧标签。 Leading = 8到 Superview。 Width = 200 ; Height = 100 ;垂直居中。高度和宽度值稍后会更改。

第 3 步:添加两个左侧标签 - 12 (正文字体)- 至 UIView .约束 1 Left = 0 ; Top = 0 .约束 2 Left = 0 ; Bottom = 0 .

第 4 步:从 2 添加垂直间距约束至 17.5并将 UIView 的高度约束更改>= 20 (运行时可能总是超过 20)。

第 5 步:更改 UIView 的宽度约束为 >= 40 (运行时可能总是超过 40);添加Trailing Space to Container两个左侧标签的约束,并将它们设置为 >= 0 .

第 6 步:向 UIView 添加顶部和底部“到 super View ”约束的 >= 0 .

第 7 步:添加右侧标签(标题 1 字体,行数 0)。约束 Top >= 0 , Right = 0 , Bottom >= 0 , 全部到 Superview;也垂直居中。

第 8 步:添加水平间距约束右侧标签 UIView,设置为20 .给右侧标签一个宽度约束 = 40 (运行时可能总是超过 40),并将Priority设置为 250 .这允许 UIView包含要控制宽度的左侧标签。

第 9 步:分配 IBOutlets 并运行应用程序。尝试更改文本。使左侧标签更短或更长……尝试将右侧标签设置为仅够一行的文本……等等。

在这一点上,事情应该看起来很不错 - 直到......你在左侧标签之一中放置了太多文本,此时你将有一个非常非常窄,非常高的右侧标签。所以……

第 10 步:向 UIView 添加另一个 宽度约束并将其设置为 <= 200 .根据您的实际内容,您可能想要修改它 - 或者将其设置为 <=到单元格宽度的百分比。

我更新了我原来的 GitHub 存储库,以便您查看。它应该对上面列出的每个“步骤”都有一个提交,这可能会更容易跟进 - https://github.com/DonMag/CellTest2

结果:

enter image description here

关于ios - 具有自动布局的 UITableCell 配置多行 UILabel 被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44990354/

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