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