OStack程序员社区-中国程序员成长平台

标题: ios Autolayout - 当第一个 View 调整大小时移动第二个 View [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 10:27
标题: ios Autolayout - 当第一个 View 调整大小时移动第二个 View

我的主视图由一个 ScrollView 组成,其中有几个文本字段作为表单的一部分。 然后我有一个 textView(实际上是一个 HPGrowingTextView),它在添加文本/行时垂直调整 textview 的大小。 在这个 TextView 下面是一个 mkmapview。 自动布局适用于初始布局,但是当 textview 调整自身大小时,mapview 不会移动(您可以在屏幕截图中看到 textview 的边框如何消失在仍位于其原始位置的 mapview 后面。

mapview 的 TopSpace 约束从 GrowingTextView.Bottom 设置为 8,所以我认为它应该始终自动与 textview 保持 8 个像素(或其他任何值)。

(我正在使用 Storyboards...GrowingTextView 是拖入 Storyboard上并设置/子类化为 HPGrowingTextView 的 UIView。 除了 map View 没有移动......它可以正常工作(在没有 map View 的情况下进行了测试)



Best Answer-推荐答案


看来 HPGrowingTextView不是自动布局兼容的。它没有实现 -intrinsicContentSize。它也没有添加任何约束。相反,它只是设置自己的框架。

在自动布局中,设置框架无效。你必须调整约束。 (改变其内在内容大小的 View 具有调整系统隐式创建的某些约束的效果。)对帧的任何更改都将在下一次布局传递时撤消。

坦率地说,我对最初的布局是明智的感到有些惊讶。您是否有高度限制或其他东西来弥补 HPGrowingTextView 没有固有尺寸这一事实?

无论如何,您需要切换到自动布局感知 View 或修复 HPGrowingTextView

关于ios Autolayout - 当第一个 View 调整大小时移动第二个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29314021/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4