gpt4 book ai didi

objective-c - Autolayout 正在调整我的窗口大小

转载 作者:太空狗 更新时间:2023-10-30 03:28:53 27 4
gpt4 key购买 nike

我有一个启用了自动布局的 nib,它包含一个 View Controller 的 View ,另外还有一个带有占位符 View 的窗口,可以将它们添加到其中。占位符相对于它的父 View 和窗口中的其他 View 有约束,在涉及我的 View Controller 之前,我让占位符随窗口按我想要的方式调整大小。稍后我加载 nib 并将其顶级 View 添加为占位符的 subview ,我还手动创建约束以使其与占位符的边缘对齐。

很好,我在我的应用程序中的多个实例中使用了这种模式,但在某些情况下,在添加 View 后我的窗口会调整大小!它缩小到添加 View 的最小尺寸,而不是 View 扩展到窗口的当前尺寸。

到目前为止,我发现防止这种情况发生的唯一方法是在添加 View 并创建其约束时,还要设置 View 的框架以为其提供占位符和窗口当前状态的初始大小。有时这没问题,但我希望能够定义更复杂的约束,而不是简单地将每条边与占位符 super View 对齐。我不想为每种情况编写帧算法。

有人知道这是怎么回事吗?如果窗口已经规定了我的占位符的大小,而不是相反,那么在添加 subview 以使当前窗口大小仍然优先时我必须做什么?

我在 Xcode 的 IB 窗口中看到了弹出菜单,它似乎是关于仅影响 subview 与超 View (为我的所有 nib 设置为前者)的约束,发生了什么与此功能相关?我还没有找到任何其他相关信息。

最佳答案

您想将抗压缩优先级设置为小于 NSLayoutPriorityWindowSizeStayPut(即 500)的值。这意味着窗口的大小优先于 View 的大小。

您可以在 IB 尺寸检查器中进行设置。

Compression resistance priority

或者您可以使用 -[NSView setContentCompressionResistancePriority:forOrientation:] 以编程方式设置它

关于objective-c - Autolayout 正在调整我的窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12191817/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com