NetNewsWire/Technotes/DarkMode.md

1.6 KiB

Dark Mode - WWDC 2018

https://developer.apple.com/documentation/appkit/supporting_dark_mode_in_your_interface https://developer.apple.com/videos/play/wwdc2018/210/

Accent colors Can do preference for content — see Mail for example linkColor — see if can use in web view icons in sidebar should not be vibrant Use opaque grayscale colors, not opacity, on top of vibrancy Colors in asset catalogs Specify for different appearances High contrast colors Dynamic system colors Resolved at draw time Pictures in asset catalogs Template images contentTintColor new API - NSImageView, NSButton Render as template image thing in IB controlAccentColor color.withSystemEffect(.pressed) Avoid nonsemantic materials Semantic materials: popover, menu, sidebar, selection, titlebar, etc. visualEffectView.material = .popover Desktop tinted background: window background, underpage, content background contentBackground default for collection views Use NSAppearance to override inheritance .aqua .darkAqua effectiveAppearance

Advanced Dark Mode: https://developer.apple.com/videos/play/wwdc2018/218/

Build with 10.14 SDK NSAppearanceCustomization NSView, NSWindow conforms NSWindow.appearanceSource Configure NSBox to fill color to get desired material visualEffectView.maskImage Can do drawing handler images - for instance with a path backgroundStyle on rows - .normal and .emphasized

Backward deployment… Most system colors are available pre-Mo Asset catalogs available on 10.13 Find hardcoded colors, use asset catalog colors NSColor(named: "SomeColor") Prefer block-based image drawing instead of lockFocus Prefer NSTextField to drawing strings