gpt4 book ai didi

cocoa - 我怎样才能得到窗口的contentView到 "hug"它的 subview

转载 作者:行者123 更新时间:2023-12-03 16:32:38 29 4
gpt4 key购买 nike

喜欢this question ,我有一个 NSView,它是 NSWindow 的 contentView,它包含几个垂直堆叠的 subview 。其中一些是固定大小,一些可以通过公开按钮展开或折叠。

我想实现一种“ Accordion ”效果,其中展开或折叠一个 subview 会使其他所有内容相应地调整并调整 super View 和窗口的大小。

看起来确实应该能够通过使用自动布局设置正确的一组约束来实现这一目标,而且我现在可以很好地完成初始布局。但我不知道如何设置约束,以便 super View 自动调整大小以容纳 subview 。

上面链接的问题中的OP从未得到答案,并提供了他自己的解决方案,就像我开始独立实现的解决方案一样,但我想我会再次将其扔在那里,以防有任何自动布局专家知道一招。似乎应该有一种方法可以通过利用自动布局让 super View 拥抱 subview ,而不必手动计算 subview 的大小并手动重置 super View 的大小。

有人知道怎么做吗?

最佳答案

自动布局很酷而且很全面。而且神秘。

我努力尝试,但无法想出一套可以实现我想做的事情的约束。在我看来,如果你在一个 super View 中垂直堆叠一些 NSView 并设置约束,使得顶部 subview 固定到 super View 的顶部,并沿着 subview 堆栈向下移动,你将每个 subview 的顶部固定到 subview 的底部边缘上面的,然后最后将最后一个 subview 的底部边缘固定到 super View 的底部边缘,然后以编程方式调整一个或多个 subview 的大小,它应该能够在 super View 的底部上拉或下推让它紧贴其 subview 。

除了最后一 block 之外,一切都按预期进行。当您尝试将底部 subview 固定到 super View 的底部时,自动布局无法满足所有约束。似乎调整 super View 的大小以满足约束并不在算法中。或者是我缺少一些其他需要设置的约束。

当我讨论这个主题时,查看调试器,似乎窗口的 contentView 和窗口框架之间存在不可设置的约束。我有点想知道如果能够打破这些限制是否能让原来的方案发挥作用。

不管怎样,我确实想出了一个使用自动布局的解决方案,它与我希望自动布局所做的非常接近,因为所需要的只是子类化 NSView 并将几行代码放入内在大小方法中,然后使用 super View 的子类。

我创建了一个 xcode 项目,其中包含我的可折叠 View 基类以及 github 上整个事情的工作演示。 。

关于cocoa - 我怎样才能得到窗口的contentView到 "hug"它的 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10415521/

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