Navigația aplicației folosește stilul SwiftUI implicit, cu un singur set de modificatori aplicat consistent în toate view-urile. Nu există logică condiționată per platformă pentru controlul navigației.
.navigationBarTitleDisplayMode(.inline))Aplicat pe: toate view-urile care au .navigationTitle(...).
Motivație: Implicit, SwiftUI afișează titlul mare (.large) în prima fereastră a unui NavigationStack sau NavigationView. Stilul large nu se potrivește layoutului aplicației, care folosește un tab bar custom imediat sub navigation bar — titlul mare consumă spațiu vertical fără beneficiu. Stilul inline plasează titlul centrat în toolbar, aliniind aspectul pe iPhone, iPad și Mac Catalyst.
Fișiere afectate:
- Views/Meter/MeterView.swift — live body și offline body
- Views/ChargedDevices/Details/ChargedDeviceDetailView.swift
- Views/ChargedDevices/Sessions/ChargeSessionDetailView.swift
- Views/ChargedDevices/Sessions/ChargedDeviceSessionsView.swift
- Views/Meter/Tabs/Live/ChargerStandbyPowerWizardView.swift
- Views/MeterMappingDebugView.swift
- Views/DeviceHelpView.swift
- Sheets (deja aveau .inline): ChargedDeviceEditorScaffoldView, SidebarChargedDeviceLibraryView, și altele
Aplicat în: AppDelegate.configureNavigationBarAppearance() via UINavigationBarAppearance.
Motivație: Fontul implicit al titlului inline este .headline (17pt semibold), perceput ca prea mic față de densitatea vizuală a conținutului. 19pt semibold oferă mai multă prezență fără a afecta spațiul disponibil, întrucât titlul rămâne pe un singur rând.
Configurare:
swift
let titleFont = UIFont.systemFont(ofSize: 19, weight: .semibold)
let appearance = UINavigationBarAppearance()
appearance.configureWithDefaultBackground()
appearance.titleTextAttributes = [.font: titleFont]
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
UINavigationBar.appearance().compactAppearance = appearance
NavigationView cu .navigationViewStyle(.stack) pe iPhone și .navigationViewStyle(.columns) pe iPad/Mac — arhitectural, nu cosmetic.toolbar { }) — plasate standard pe .navigationBarTrailing / .cancellationAction / .confirmationActionconfigureWithDefaultBackground() păstrează comportamentul implicit al sistemului (translucid/blur)Anterior existau mai multe straturi de modificatori conflictuali adăugați în tentative de a obține un layout compact "Nav Control – Title – Tools" pe Mac Catalyst și iPad:
- navigationBarHidden(landscape) — ascundea bara în landscape pe Catalyst
- IOSOnlyNavBar (ViewModifier) — aplica titlu și toolbar condițional pe !isTrueMacApp
- macNavigationHeader și offlineMacHeader — headere custom inline în VStack care dublau controalele când bara de sistem era vizibilă
- ToolbarItemGroup(placement: .primaryAction) {} gol pe Catalyst — crea artefacte vizuale
Toate au fost eliminate în aprilie 2026. Soluția corectă a fost .navigationBarTitleDisplayMode(.inline) aplicat consistent.