Проверьте, является ли NSView видимым в его NSWindow - PullRequest
0 голосов
/ 22 февраля 2019

Как я могу узнать, виден ли мой NSView в пределах его NSWindow?

. Он должен учитывать прокрутку суперпредставлений.

Требуется , а не .чтобы узнать, является ли NSWindow видимым для пользователя.

Учет перекрывающихся представлений было бы "хорошо иметь", но не обязателен.

1 Ответ

0 голосов
/ 22 февраля 2019

Это должно быть сделано.

@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

Примечание: Перекрывающиеся виды не учитываются.

...