【问题标题】:AutoLayout: different OS X versions, different behaviors?AutoLayout:不同的 OS X 版本,不同的行为?
【发布时间】:2015-03-20 15:56:49
【问题描述】:

我正在为 OS X 开发一个应用程序,它在退出时会显示一个小窗口(使用自动布局)。窗口大小约为 550 x 290 像素,并且是固定的。

但我正面临一种对我来说似乎很奇怪的行为:

  • 在 OS X 10.7 上启动应用程序:小窗口的大小大约是应有大小的三倍(宽度和高度)
  • 在 OS X 10.8 上启动应用程序:窗口的宽度适合,但它的高度仍然是应有的两倍
  • 在 OS X 10.9 上启动应用程序:窗口具有我设计的大小
  • 在 OS X 10.0 上启动应用程序:与 10.9 相同(正确)的行为

我已将所有约束重新设置为正确设置(Xcode 未显示布局问题)。有人能告诉我那里可能发生什么吗?

我绝对确定视图中没有其他(冲突或修改)约束。

更新

您可以在下面找到包含窗口所有约束的图像。窗口本身的约束(最小和最大大小)已设置为当前(预期)大小。 左侧的图像已固定到底部、左侧和顶部,其缩放行为已设置为proportionally down。所以图片不应该是问题的根源。

【问题讨论】:

  • 您必须展示实际的约束条件。窗户里有什么?里面是否有任何东西比你预期的要大(例如放大的图像)?
  • 如果您使用尺寸检查器将窗口的最大尺寸限制为预期尺寸会怎样?
  • @JWWalker 最小和最大尺寸的约束已设置为当前尺寸。
  • @KenThomases 我已经更新了我的问题,并在其中放入了一张图片以分别显示窗口及其视图的约束。
  • 图像视图可能确实是问题所在。将其按比例缩小并不意味着它一定会。如果其抗压缩优先级大于(或等于)500 (NSLayoutPriorityWindowSizeStayPut),则自动布局将(可能)更愿意更改窗口大小而不是压缩/缩小图像。图像视图实际上显示的是大图像吗?

标签: macos cocoa autolayout


【解决方案1】:

我找到了一个可行的解决方案。我认为这是资产目录中的 2x 图像(导致高度加倍)和视图中的标签的组合。标签包含太多文本,以至于它们要么必须自动换行,要么必须拉伸它们直到内容适合(Lion 和 Mountain Lion 似乎这样做)。

我已将width 约束添加到两个标签,并将其固定为当前值(如界面生成器中所给)。这对我有用,因为 AutoLayout 似乎保留了标签的宽度并包裹了它们的内容(如预期的那样)。

非常感谢您的提示。

【讨论】:

    猜你喜欢
    • 2019-09-17
    • 2014-08-27
    • 1970-01-01
    • 2016-02-28
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多