NSPopover + NSBox в темном режиме проблема оттенка / гаммы

У меня NSPopover с NSBox, и есть подпредставления: MKMapView и NSImageView. В темном режиме весь NSBox добавляет гамму / оттенок ко всем подпредставлениям. Это не отображается в светлом режиме (сравните изображения ниже). Вроде что то с NSVisualEffectView. Как я могу предотвратить / отключить этот эффект?

PS: Этот эффект не отображается в обычном окне. Затронуто только поповер.

Темный режим  Легкий режим

Кодируйте нестандартные элементы перетаскивания. Мохаве 10.14.4

- (IBAction)showPopover:(id)sender {
    [[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSRectEdgeMaxX];
}

Изменить: APR2020 Согласно «Внедрение расширенных функций нового пользовательского интерфейса OS X yosemite» (youtube ) это происходит из-за эффекта яркости цвета заливки. Popover имеет эффектный внешний вид NSVibrantDarkAppearance

(lldb) po [self.view .effectiveAppearance]
▿ 1 element
  - 0 : <NSCompositeAppearance: 0x60000210a940
 (
    "<NSVibrantDarkAppearance: 0x60000170b840>",
    "<NSDarkAquaAppearance: 0x60000170ae80>",
    "<NSSystemAppearance: 0x60000170afc0>"
)>
lldb) po [self.view .superview]
▿ 1 element
  ▿ 0 : Optional<NSView>
    - some : <NSPopoverFrame: 0x1020a63f0; material: Popover; blendingMode: BehindWindow; state: Active>

Поэтому другое возможное решение - использовать неяркий цвет заливки.


person Marek H    schedule 14.05.2019    source источник


Ответы (1)


Решается добавлением дополнительных NSVisualEffectView за NSBox, где наложение должно происходить внутри окна. слева (с визуальным эффектом), справа (без).

введите описание изображения здесь

person Marek H    schedule 14.05.2019