2013-04-15 47 views
1

我巨資在我的新項目中使用的自動佈局,但我得調整過程中涉及到NSWindow一個問題...NSWindow的榜首位置被調整大小時跳(自動佈局)

  • NSWindow是無國界的窗口,
  • 初始設置期間
  • ,該窗口的幀基於狀態項位置和初始內容視圖尺寸(contentViewintrinsicContentSize)被設置,
  • 垂直錨屬性被設置爲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]; 
} 

...它看起來像自動佈局更改窗口的原點,然後自動佈局意識到高度應改變以及...

任何人都看到了這種行爲?

回答

1

過失,我怎麼能錯過了,那是因爲我使用NSLayoutConstraint對我的意見之一height,我通過animator動畫它,它產生非整數值 - 所以height有時確實含有實數和這是跳起NSWindow的原因。問題解決了。

+0

本視頻詳細討論了窗口大小調整動畫過程中的「抖動」問題:https://developer.apple.com/videos/play/wwdc2013/213/ – matt

相關問題