我希望在某个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