Pie*_*ton 9 cocoa objective-c nslayoutmanager appkit autolayout
我有一个启用autolayout的笔尖,其中包含一个视图控制器的视图,另外还有一个带有占位符视图的窗口,可以将它们添加到其中.占位符相对于其超视图和窗口中的其他视图具有约束,在涉及我的视图控制器之前,我有占位符按照我想要的方式调整窗口大小.稍后我加载nib并将其顶级视图添加为占位符的子视图,我还手动创建约束以使其与占位符的边缘对齐.
一切都很好,我在我的应用程序中的几个实例中使用此模式,但在某些情况下,添加视图后,我的窗口调整大小!它正在缩小到添加视图的最小尺寸,而不是扩展到窗口当前大小的视图.
到目前为止,我发现阻止这种情况的唯一方法是,在添加视图并创建其约束时,还要设置视图的框架,以便为占位符和窗口的当前状态提供初始大小.在某些时候这没关系,但是我希望能够定义更复杂的约束,简单地将每个边缘与占位符超级视图对齐.我不想为每种情况编码帧算术.
有谁知道发生了什么?如果窗口已经指示了占位符的大小,而不是相反,那么在添加子视图时我还需要做些什么来使当前窗口大小仍然优先?
我已经看到Xcode的IB窗口中的弹出菜单似乎是关于仅影响子视图的约束,还有superview(设置为我的所有笔尖的前者),是否正在发生与此功能相关的事情?我还没有找到任何其他相关信息.
iai*_*ain 11
您希望将压缩阻力优先级设置为小于NSLayoutPriorityWindowSizeStayPut
500的值.这意味着窗口的大小优先于视图的大小.
您可以从IB尺寸检查器中进行设置.
或者您可以使用编程方式进行设置 -[NSView setContentCompressionResistancePriority:forOrientation:]