gpt4 book ai didi

objective-c - NSWindow 的顶部位置在调整大小期间跳跃(自动布局)

转载 作者:行者123 更新时间:2023-12-03 17:12:52 26 4
gpt4 key购买 nike

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

  • NSWindow 是无边框窗口,
  • 在初始设置期间,此窗口的框架是根据状态项位置和初始内容 View 大小(contentViewintrinsicContentSize)设置的,
  • 垂直 anchor 属性设置为NSLayoutAttributeTop
  • 水平 anchor 属性设置为 NSLayoutAttributeCenterX

...到目前为止,一切都很好。 NSWindow 放置正确,大小正确,一切看起来都不错。

每当 contentView 由于自动布局等原因自动调整大小时。最终窗口位置正确,大小正确,...,再次如此,到目前为止一切顺利。

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

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

NSRect frameRect = window.frame;
while ( frameRect.size.height != desiredHeight ) {
frame.origin.y -= 1; // Move window down by 1px
[self setFrame:frame display:YES animate:YES];
frame.size.height += 1; // Increase window height
[self setFrame:frame display:YES animated:YES];
}

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

有人看到过这种行为吗?

最佳答案

我很抱歉,我怎么会错过它,因为我确实使用 NSLayoutConstraint 作为我的一个 View 的 height ,并且我通过 animator 为其设置动画 并且它产生非整数值 - 因此 height 有时确实包含实数,这就是跳转到 NSWindow 顶部的原因。问题解决了。

关于objective-c - NSWindow 的顶部位置在调整大小期间跳跃(自动布局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16013101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com