当前位置: 首页 > 知识库问答 >
问题:

如何在可重用的 UITable中设置约束查看器

景辰钊
2023-03-14

我的xib布局喜欢在绘图下,除了“c”的高度常数之外,我还设置了从“a”到“b”到...“e”的约束,以便可以确定单元格的高度。有时“c”会隐藏,因为一些原因,我将高度常数更改为零,并在标签内容可见时按实际高度更改。

--------------------------------------
UILabel(name-singleline)         a
UILabel(title-Multi line)         b
UIView(hidden or not)             c (default height constant = 80)
 -UILabel(content Multi line)     d
UILabel(singleline)               e
--------------------------------------

但有一个自动布局警告让我发疯

(
    "<NSLayoutConstraint:0x15756760 V:[UILabel:0x15756650'XXXX'(15)]>",
    "<NSLayoutConstraint:0x15757130 V:[UIView:0x15756ee0(80)]>",
    "<NSLayoutConstraint:0x15758060 V:|-(21)-[UILabel:0x15756650'XXXX']   (Names: '|':UITableViewCellContentView:0x157563a0 )>",
    "<NSLayoutConstraint:0x15758120 V:[UILabel:0x15756650'XXXX']-(14)-[Project.GWWLabel:0x157573d0'YYYY']>",
    "<NSLayoutConstraint:0x157581e0 V:[Project.GWWLabel:0x157573d0'YYYY']-(3)-[UIView:0x15756ee0]>",
    "<NSLayoutConstraint:0x15758210 V:[UIView:0x15756ee0]-(8)-[UILabel:0x157569e0'ZZZZ']>",
    "<NSLayoutConstraint:0x15758270 V:[UILabel:0x157569e0'ZZZZ']-(18)-|   (Names: '|':UITableViewCellContentView:0x157563a0 )>",
    "<NSLayoutConstraint:0x1575d760 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x157563a0(139.5)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x15757130 V:[UIView:0x15756ee0(80)]>

我也很想了解为什么会发生这种情况

共有2个答案

丌官晔
2023-03-14

自动布局的第一条黄金法则(特别是在处理TableView的单元格时)是能够从上到下,从左到右绘制一条线,并能够确定每个元素的大小。要对此进行管理,您需要确保每个视图每侧至少有一个约束(除非可以推断出它的大小)

有时在不同屏幕大小上测试UI时,约束可能会被打破。在这种情况下,您应该更改约束的优先级或视图的内容拥抱/压缩阻力,以允许自动布局打破does约束并更改常量以适应屏幕大小。(大多数情况下,它只会在几点内发生变化,如果变化更多,则可能需要更改约束)

同样重要的是要提到“隐藏的视图,即使它们不绘制,仍然参与自动布局,并且通常保留其框架,将其他相关视图留在它们的位置。

你可能想看看这篇文章或这篇文章,如果你使用swift

裴和怡
2023-03-14

试试这个:

如下图所示,设置高度约束750的优先级。当你改变高度常量时,它会起作用

 类似资料:
  • 在 一到三个 。有没有办法在后始终将单元格放置在屏幕底部?

  • 问题内容: 是否有一个TSQL脚本可以让我看到约束的内容。我发现了一个有关Oracle的问题,但我需要一个TSQL脚本。 如何在Oracle上查看检查约束的内容 我知道sys.check_constraints,但是对于所有对象,“定义”都返回null。 问题答案: 其他方式 用于检查约束 对于默认约束 还有另一种方式

  • 在MySQL 中可以使用 SHOW CREATE TABLE 语句来查看表中的约束。 查看数据表中的约束语法格式如下: SHOW CREATE TABLE <数据表名>; 例 1 创建数据表 tb_emp8 并指定 id 为主键约束,name 为唯一约束,deptId 为非空约束和外键约束,然后查看表中的约束,SQL 语句运行结果如下。

  • 问题内容: 我没有创建正在使用的数据库,但是我想查看检查约束的详细信息。 我知道对列的检查约束正在强制执行一组特定值,并且我想知道这些值是什么。例如,如果检查约束强制使用字符“ Y”和“ N”,则我希望能够查询数据库并看到可接受的值为“ Y”和“ N”。 这可以通过查询来完成吗? 问题答案: 将在特定表上列出所有检查约束的检查和约束名称。

  • 在我的人造示例中,我有以下单个视图: 如您所见,它由几个简单的约束组成: 将水平和垂直中心对齐, 高度(设置为常数) 前导空格和尾随空格(设置为常量) 我想要实现的是让这个红色/粉红色的视图从顶部“进来”。传统上,在一个没有约束的世界中,我只需修改,但我不确定在约束世界中如何进行类似操作。 为了重申我的问题,我如何使我的视图从场景开始,并为从顶部飞入的视图设置动画? 我考虑过设置垂直中心约束的动画

  • 当我为数据库生成DDL时,我不想有任何外键。 根据< code > javax . persistence . constraint mode ,有一个默认值: 那么如何在Hibernate中设置默认值呢? 我在JPA中使用Hibernate通过Spring Boot数据。