如何知道我的NSView
是否在其NSWindow
中可见?
它需要考虑滚动超级视图。
不需要不需要知道NSWindow
是否对用户可见。
考虑重叠视图将是“很高兴”,但不是必需的。
答案 0 :(得分:1)
这应该做到。
@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
注意:未考虑重叠视图。