NSWindow的最高位置是在调整大小(自动布局)期间跳跃

时间:2013-04-15 10:37:53

标签: objective-c cocoa nswindow autolayout

我在新项目中大量使用自动布局,但在调整大小期间我遇到了一个与NSWindow相关的问题......

  • NSWindow是无边框窗口,
  • 在初始设置期间,此窗口的框架根据状态项位置和初始内容视图大小(intrinsicContentSize的{​​{1}})进行设置,
  • 垂直锚点属性设置为contentView
  • 水平锚点属性设置为NSLayoutAttributeTop

......到目前为止,非常好。 NSLayoutAttributeCenterX放置正确,大小正确,一切都很好。

每当NSWindow由于自动布局等而自动调整大小时,最终窗口位置正确,大小正确,......,所以再次,到目前为止一直很好。

有什么问题?当动画正在进行时(窗口垂直调整大小),我的窗口顶部跳跃+ - 1像素向下/向上/向下/向上/向下/向上/向下/向上/ ...直到动画结束。它看起来很丑......

它的行为就像这个伪代码......

contentView

...看起来自动布局改变窗口的原点,然后自动布局意识到高度也应该改变,...

有人确实看到过这种行为吗?

1 个答案:

答案 0 :(得分:1)

Mea culpa,我怎么能错过它,因为我使用NSLayoutConstraint作为我的一个观点的height,我通过animator制作动画,它会产生非整数值 - 所以height有时确实包含实数,这是跳NSWindow顶部的原因。问题解决了。