Car*_*ape 6 macos user-interface xcode constraints nswindow
我正在制作一个在OS X上使用的应用程序,我注意到新的约束功能在Interface Builder中有多么有用(当然,它现在内置在Xcode中).它实际上非常有用和动态,我在质疑我是否应该设置最小窗口大小,或者只是依靠窗口的约束来设置最小值和最大值.
我有一种感觉,OS X将最小和最大窗口大小考虑在内,除了以某种方式限制窗口大小之外的其他事项,并且为此设置最小值和最大值可能是有用的,但我也觉得它可能是好的样式依赖于约束来动态设置最小和最大窗口高度,因为它们的动态行为和所有.例如,如果我决定使用约束更改控件的最小宽度,我不必担心也会更改最小窗口的最小宽度.
依赖于约束来设置最小和最大窗口大小的好处的另一个更重要的例子是,如果用户更改了文本大小之类的内容,我的应用程序中受影响的控件可以动态地更改其大小约束,但是静态设置最小和最大窗口大小会破坏该动态行为.
再一次,考虑到OS X可能会以某种方式考虑最小和最大窗口大小,并且因此设置最小值和最大值可能是有用的,这一点也应考虑所有这些好处; 我只是不知道如果 OS X把他们考虑在内,如果他们这样做,怎么它使用它们.
我查看了Apple的文档,找不到任何可以提供令人满意的答案的内容.
在这种情况下最好的办法就是亲自尝试一下。创建一个带有单个窗口和一些控件的新应用程序只花了不到两分钟的时间。如果您只想使用可调整大小的窗口,则根本不需要添加任何代码:

这个窗口没有最小尺寸,也没有任何限制,问题立刻就显而易见了。您可以调整窗口大小,使其看起来像这样:

在按钮之间添加一些约束显示了约束所提供的承诺。现在窗口在最小尺寸时看起来像这样:

对标签的更多限制最终给出了期望的结果:

这太棒了,但是需要做一些工作才能到达那里。我没有添加一套完整的约束 - 两个右手按钮之间的垂直约束是多余的,因为左侧按钮之间已经有一个。对于具有许多控件的窗口,设置足够的约束来覆盖所有视图可能是:a)非常有用且值得,或者b)令人讨厌并且没有什么额外价值。这取决于你的情况。一个更简单的方案是仅将可能重叠的控件(两个按钮和标签)的高度以及它们之间所需的空间相加,然后将其设置为窗口的最小高度。
我可以看到这两种策略都很有用,具体取决于窗口内容。事实上,我认为它们根本不是两种独立的策略......设置最小窗口尺寸实际上只是您添加的另一种约束。例如,可能存在一个尺寸,低于该尺寸您的窗口将看起来很愚蠢或不是很有用,因此您可以将最小窗口尺寸设置为这些尺寸。同时,您可能希望在按钮之间设置约束,以防止本地化版本中的控件重叠(例如,德语名称往往会变得很长)。
| 归档时间: |
|
| 查看次数: |
2286 次 |
| 最近记录: |