- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力让一些多行标签在 tableview 单元格内运行。我已经摆脱了这个问题中描述的根本无法可靠工作的堆栈
UILabel inside nested UIStackViews inside UITableViewCell sometimes truncating
我在对那个问题的评论的帮助下修正了我的一个观点,但另一个观点对我不起作用,即使在移动到自动布局非堆栈 View 设置之后也是如此。然后我最终将我无法使用的单元格移动到使用类似布局的 View 中,并达到了我在同一 View 中有两个单元格的地步,一个有效,一个无效。我已将其导出到我已上传的新测试应用程序中 here
在这个应用程序中有一个简单的表格 View ,其中有 2 个单元格。一个单元格可以正确显示大型多行文本并根据需要展开单元格。正如您在此处看到的那样,另一个单元格突然停止并截断了多行标签
在我看来,这两个单元格的约束条件几乎完全相同,所以我很困惑为什么一个单元格有效而另一个单元格无效。这是他们的约束的概述
有一些约束没有安装,因为我一直在尝试找出导致其中一个单元无法工作的原因。
如果有人能向我解释是什么导致这两个单元格的行为不同,或者更重要的是为什么其中一个标签没有填充它的表格单元格,我将不胜感激,因为我花了几个小时寻找和就是想不通。
干杯!
最佳答案
编辑:
首先要解释哪里出了问题...
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 步:添加两个左侧标签 - 1
和 2
(正文字体)- 至 UIView
.约束 1
Left = 0
; Top = 0
.约束 2
Left = 0
; Bottom = 0
.
第 4 步:从 2
添加垂直间距约束至 1
的 7.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
结果:
关于ios - 具有自动布局的 UITableCell 配置多行 UILabel 被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44990354/
猫f1.txt阿曼维沙尔阿杰贾伊维杰拉胡尔曼尼什肖比特批评塔夫林现在输出应该符合上面给定的条件 最佳答案 您可以在文件读取循环中设置一个计数器并打印它, 计数=0 读取行时做 让我们数一数++ if
我正在尝试查找文件 1 和文件 2 中的共同行。如果公共(public)行存在,我想写入文件 2 中的行,否则打印文件 1 中的非公共(public)行。fin1 和 fin2 是这里的文件句柄。它读
我有这个 SQL 脚本: CREATE TABLE `table_1` ( `IDTable_1` int(11) NOT NULL, PRIMARY KEY (`IDTable_1`) );
我有 512 行要插入到数据库中。我想知道提交多个插入内容是否比提交一个大插入内容有任何优势。例如 1x 512 行插入 -- INSERT INTO mydb.mytable (id, phonen
如何从用户中选择user_id,SUB(row, row - 1),其中user_id=@userid我的表用户,id 为 1、3、4、10、11、23...(不是++) --id---------u
我曾尝试四处寻找解决此问题的最佳方法,但我找不到此类问题的任何先前示例。 我正在构建一个基于超本地化的互联网购物中心,该区域分为大约 3000 个区域。每个区域包含大约 300 个项目。它们是相似的项
preg_match('|phpVersion = (.*)\n|',$wampConfFileContents,$result); $phpVersion = str_replace('"','',
我正在尝试创建一个正则表达式,使用“搜索并替换全部”删除 200 个 txt 文件的第一行和最后 10 行 我尝试 (\s*^(\h*\S.*)){10} 删除包含的前 10 行空白,但效果不佳。 最
下面的代码从数据库中获取我需要的信息,但没有打印出所有信息。首先,我知道它从表中获取了所有正确的信息,因为我已经在 sql Developer 中尝试过查询。 public static void m
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我试图在两个表中插入记录,但出现异常。您能帮我解决这个问题吗? 首先我尝试了下面的代码。 await _testRepository.InsertAsync(test); await _xyzRepo
这个基本的 bootstrap CSS 显示 1 行 4 列: Text Text Text
如果我想从表中检索前 10 行,我将使用以下代码: SELECT * FROM Persons LIMIT 10 我想知道的是如何检索前 10 个结果之后的 10 个结果。 如果我在下面执行这段代码,
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我正在尝试在我的网站上开发一个用户个人资料系统,其中包含用户之前发布的 3 个帖子。我可以让它选择前 3 条记录,但它只会显示其中一条。我是不是因为凌晨 2 点就想编码而变得愚蠢? query($q)
我在互联网上寻找答案,但找不到任何答案。 (我可能问错了?)我有一个看起来像这样的表: 我一直在使用查询: SELECT title, date, SUM(money) FROM payments W
我有以下查询,我想从数据库中获取 100 个项目,但 host_id 多次出现在 urls 表中,我想每个 host_id 从该表中最多获取 10 个唯一行。 select * from urls j
我的数据库表中有超过 500 行具有特定日期。 查询特定日期的行。 select * from msgtable where cdate='18/07/2012' 这将返回 500 行。 如何逐行查询
我想使用 sed 从某一行开始打印 n 行、跳过 n 行、打印 n 行等,直到文本文件结束。例如在第 4 行声明,打印 5-9,跳过 10-14,打印 15-19 等 来自文件 1 2 3 4 5 6
我目前正在执行验证过程来检查用户的旧密码,但问题是我无法理解为什么我的查询返回零行,而预期它有 1 行。另一件事是,即使我不将密码文本转换为 md5,哈希密码仍然得到正确的答案,但我不知道为什么会发生
我是一名优秀的程序员,十分优秀!