6

NSScrollView (따라서 포함 된 NSOutlineView)에 희미한 NSVisualEffectView을 사용하여 창 뒤 블렌딩 효과를 얻으려고합니다.NSScrollView 뒤에 NSVisualEffectView

NSVisualEffectView 컨테이너보기를 성공적으로 만들고 내 스크롤보기를 하위보기로 배치했습니다. 이것은 (내 모든 테이블 셀, 테이블, nsscrollview 등을 투명하게 만드는 한) 잘 작동하는 것 같습니다.

하지만 지금은 접근성 옵션에서 '투명도 줄이기'를 설정했는데 갑자기 검은 배경이 내 NSScrollView 뒤에 있습니다. 내 자신의 배경을 그릴 수 있도록 drawRect 메서드를 재정의하기 위해 시각적 효과보기를 서브 클래 싱하려고 시도했지만 이것이 불가능하거나 권장된다는 것을 배웠습니다.

투명도 줄이기가 켜짐을 감지하고 어떻게 동적으로 화면을 불투명하게 만들 수 있습니까?

답변

6

OS X 요세미티의 새로운 접근성 기능에 대한 기본 설정을 확인하는 데 사용할 수있는 NSWorkspace의 몇 가지 새로운 방법이 있습니다. -[NSWorkspace accessibilityDisplayShouldReduceTransparency]은 원하는 것입니다.

NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification을 청취하면 해당 환경 설정이 언제 변경되는지 알 수 있습니다. 해당 알림을 올바른 NSNotificationCenter, 즉 [[NSWorkspace sharedWorkspace] notificationCenter]에 등록해야합니다.

1

이제는 모든 것을 포함하는 부모 NSView을 재정의하고 그 배경색을 설정 한 것 같습니다. 이렇게하면 투명도 줄이기가 켜지면 NSVisualEffectView이 투명 해지고 결국 내가 얻는 색상이 그 아래에 표시됩니다. 이것은 현재 잘 작동하는 것 같습니다.

+0

또한 활기가 활성화되어 있는지 확인하는 올바른 방법을 찾았습니다.이 플래그는 'self.effectiveAppearance.allowsVibrancy'입니다. – strangetimes