1
我巨資在我的新項目中使用的自動佈局,但我得調整過程中涉及到NSWindow一個問題...NSWindow的榜首位置被調整大小時跳(自動佈局)
NSWindow
是無國界的窗口, 初始設置期間
- ,該窗口的幀基於狀態項位置和初始內容視圖尺寸(
contentView
intrinsicContentSize
)被設置, - 垂直錨屬性被設置爲
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];
}
...它看起來像自動佈局更改窗口的原點,然後自動佈局意識到高度應改變以及...
任何人都看到了這種行爲?
本視頻詳細討論了窗口大小調整動畫過程中的「抖動」問題:https://developer.apple.com/videos/play/wwdc2013/213/ – matt