我希望在某個NSView
的- (NSRect)visibleRect
發生更改時收到通知,因爲我想根據可見矩形做一些奇特的子視圖佈局。坦率地說,現在我很難過; -visibleRect
不會發出KVO通知(這是有道理的),並且似乎沒有辦法在沒有明確地呼叫-visibleRect
的情況下查明可見矩形是否改變。是否可以觀察-visibleRect
這是可能的嗎? (或者這是一個可怕的,可怕的想法?)
我希望在某個NSView
的- (NSRect)visibleRect
發生更改時收到通知,因爲我想根據可見矩形做一些奇特的子視圖佈局。坦率地說,現在我很難過; -visibleRect
不會發出KVO通知(這是有道理的),並且似乎沒有辦法在沒有明確地呼叫-visibleRect
的情況下查明可見矩形是否改變。是否可以觀察-visibleRect
這是可能的嗎? (或者這是一個可怕的,可怕的想法?)
我認爲你可以覆蓋-[NSView updateTrackingAreas]
或收聽NSViewDidUpdateTrackingAreasNotification
。這些可能發生在更多情況下,而不僅僅是可見矩形的改變,但是它們應該發生在可見矩形的任何改變上。我認爲。
這就是說,這可能是一個可怕的想法。很難知道。 :)
10.5的另一個選項是-viewWillDraw方法,它在繪製視圖(及其子視圖)之前被調用。您可以在調用[super viewWillDraw]之前獲取視圖的可見矩形並執行佈局。
肯的建議聆聽跟蹤區域的變化感覺hacky但似乎工作,雖然他們只在調整大小完成後觸發。如果您需要像調整大小時那樣需要更新,則重寫-[NSView resizeWithOldSuperviewSize:]
將會這樣做
爲什麼減號1? – Vervious