我确实在我的新项目中大量使用了自动布局,但是在调整大小时我遇到了一个与 NSWindow 相关的问题......
NSWindow
是无边框窗口,- 在初始设置期间,此窗口的框架是根据状态项位置和初始内容视图大小(
intrinsicContentSize
的contentView
)设置的, - 垂直锚属性设置为
NSLayoutAttributeTop
, - 水平锚属性设置为
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];
}
...看起来自动布局改变了窗口的原点,然后自动布局意识到高度也应该改变,......
有人看到这种行为吗?