Ios 推送新视图控制器时,自动布局高度会更改
编辑:我修复了我的问题,但我有兴趣了解我的修复为何有效。见下文 我使用autolayout构建我的Ios 推送新视图控制器时,自动布局高度会更改,ios,uitableview,autolayout,Ios,Uitableview,Autolayout,编辑:我修复了我的问题,但我有兴趣了解我的修复为何有效。见下文 我使用autolayout构建我的UITableViewCells 单元格非常简单,有两个标签(紫色和黄色)和一个文本字段(绿色) 这在第一次显示时工作正常。但当我按下一个新的视图控制器时,视图会立即重新排列自己。无论什么原因,紫色标签都会变大 下面是一个示例,我单击“父帐户ID”单元格以推送一个新的视图控制器。请注意,转换一开始,布局就发生变化。当我回来时,它仍然是变化的 项目是使用无框架的[UILabel new]创建的 [
UITableViewCell
s
单元格非常简单,有两个标签(紫色和黄色)和一个文本字段(绿色)
这在第一次显示时工作正常。但当我按下一个新的视图控制器时,视图会立即重新排列自己。无论什么原因,紫色标签都会变大
下面是一个示例,我单击“父帐户ID”单元格以推送一个新的视图控制器。请注意,转换一开始,布局就发生变化。当我回来时,它仍然是变化的
项目是使用无框架的[UILabel new]
创建的
[self.contentView addSubview:self.textLabel];
[self.contentView addSubview:self.errorLabel];
[self.contentView addSubview:self.textField];
然后使用创建自动布局
请注意,我从未指定高度,因为我并不真正关心高度。(只要是一致的!)
你知道为什么这会改变吗?谢谢
编辑:我找到了一个解决方案。
我现在还设置了contentView
的自动布局属性
[self.contentView makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
我仍然有兴趣了解
contentView
更改大小的原因您的修复程序之所以有效,是因为它强制执行了一个缺少的约束
首先,让我们先写下使用砌体创建的约束:
根据您在上面创建的规则,这三种可能性都是正确的。 点击单元格时,布局将无效并重新绘制。考虑到你的单元格可以用几种不同的方式绘制,它只需绘制自己并满足你所有的约束条件。。。确实如此 老实说,我不是100%确定是什么
make.edges.equalTo(self)
确实如此,因为它有点模棱两可。然而,有一点是肯定的,那就是它添加了您所寻找的缺少的约束
可能缺少的约束条件包括:
希望这能为您澄清这一点。当您第二次推送和弹出时会发生什么?一旦它变大,它将保持较大。我也有同样的问题,但不幸的是,您的解决方案对我不起作用。我遇到了同样的问题,但您的解决方案没有帮助。
[self.contentView makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];