首页 > 解决方案 > NSWindow 缩小以适应带有填充的内容

问题描述

我是可可开发的新手,想知道以下正确的方法是什么:

我有一个窗口,可以控制谁的大小是动态的。也就是说,我事先并不知道窗口的宽度。我还想给窗口一个 15px 的填充。在 CSS 世界中,我只需填充一个 div 并使其内联即可完成此操作。我似乎无法弄清楚如何使用 NSWindow/NSView 来做到这一点。

标签: swiftcocoa

解决方案


问题太模糊了,无法确定,但如果我理解你,你希望窗口的子视图将自身调整为距离封闭窗口的左侧和右侧始终为 15 像素(例如)。

这是两个约束(在 Interface Builder 中设置,但您可以从代码中执行相同的操作):

引导空间到superview 在此处输入图像描述

这是一个视图,其宽度设置为调整,同时将窗口框架的左右填充保持在 15 像素(实际上是点,但不要担心)。

随着您的视图层次结构变得越来越复杂,您将对布局的不同部分使用不同的技术。这就是为什么马特建议您还不够具体,无法实际回答问题。(您尝试做的具体部分不起作用,您尝试了什么不起作用?)。我已经向您展示了上面最简单外层的第一步,它反映了贯穿您的视图层次结构的原则,但还有其他情况 - 两个具有相同宽度的项目,三个项目之间具有相同的水平间距,等等 - 这需要不同的技术。

听起来一直阅读自动布局文档会对您有所帮助。它讨论了不同类型的关系(Equal 是我在下面使用的)和一些技术。不幸的是,Apple 的文档情况目前有点混乱,这使得这比它应该做的更加困难(叹气)。

曾经是权威的自动布局指南是“未维护的”,文档似乎指向的地方不完整,而且肯定难以访问。这个上下文最有用的部分是NSLayoutContraint文档,尽管它链接到上面提到的“未维护”文档(叹气)。


推荐阅读