我怎么知道我的NSView
在NSWindow
中是否可见?
它需要考虑滚动超级视图。
它不需要知道NSWindow
是否对用户可见。
对重叠视图进行核算将是“很好”,但不是必需的。
这应该做到这一点。
@interface NSView (Visibility)
- (BOOL)visibleInWindow;
@end
@implementation NSView (Visibility)
- (BOOL)visibleInWindow
{
if (self.window == nil) {
return NO;
}
// Might have zero opacity.
if (self.alphaValue == 0 || self.hiddenOrHasHiddenAncestor) {
return NO;
}
// Might be clipped by an ancestor.
return !NSIsEmptyRect(self.visibleRect);
}
@end
注意:不考虑重叠视图。