再次显示视图控制器时自动布局中断

Posted

技术标签:

【中文标题】再次显示视图控制器时自动布局中断【英文标题】:AutoLayout breaking when displaying a view controller again 【发布时间】:2015-02-15 10:34:13 【问题描述】:

我正在尝试使用 textview 进行自动布局,当视图加载时它工作得非常好,但是当我转到另一个视图控制器并返回到这个视图控制器时,我看到所有的自动布局都丢失了,这里是屏幕截图。

这是加载应用程序时的样子:

当我转到其他视图控制器(例如 36 个博客或设置)并返回博客帖子时,我发现所有自动布局都丢失了。这是丢失的自动布局的屏幕截图:

这是返回视图控制器时的控制台输出:

我正在使用故事板。

【问题讨论】:

我不会说 AutoLayout 已被完全禁用。但是,是的,博客文章的描述不再存在,缩略图稍微错位。 是的,它发生在所有 tableViews 中,在一个 tableview 中,我在 TextView 下有 320x100 的博客文章缩略图,该图像也消失了。试图从 2 天内弄清楚这一点。 您是否以编程方式添加此约束? 尝试在viewWillDisappear中为你的tableview设置一个estimatedRowHeight,rowHeight应该是你的平均单元格高度。 我之前实际上尝试过estimatedRowHeight,但在viewDidLoad中,不管怎样,终于成功了 【参考方案1】:

我已尝试创建您面临的问题。这就是我所做的,并尝试这样做我所做的只是设置自定义单元格的高度,如下图所示。

这里我没有以编程方式设置“heightForRowAtIndexPath:(NSIndexPath *)indexPath”。 布局约束

结果:

希望这能解决您的问题。如果这仍然不能解决您的问题,那么请。添加您如何为自定义单元格设置约束的屏幕截图。

【讨论】:

问题已在 viewWillDisappear 中使用estimatedRowHeight 解决。在您的单元格中,您似乎已将 textView 的高度设置为 42 可能这就是您没有问题的原因,我的有顶部、左侧、右侧和底部约束,因为我希望 textView 高度取决于文本的长度 好的,谢谢您的回复。很高兴知道您的问题已解决。 我还通过删除 textView 高度检查了我的演示,它工作正常而不会破坏约束,因为我已将行高设置为 100。但您可以设置 - self.tableView.rowHeight = UITableViewAutomaticDimension;您可以查看它,它可能对您当前的问题或设置动态 tableView.rowHeight 有所帮助。快乐编码。 是的,我昨天试过了,没用,然后我在这里问

以上是关于再次显示视图控制器时自动布局中断的主要内容,如果未能解决你的问题,请参考以下文章

动态调整视图大小(拖动运动)时自动布局约束中断

UIView addSubview 自动布局不起作用

自定义 UITableViewCell 的自动布局约束在运行时失败

当我推送一个新的视图控制器时,自动布局高度发生变化

视图不显示和自动布局集中

如何使用自动布局在两个子视图控制器之间移动?