Я сделал свой собственный тест, используя этот код, упрощенный и немного измененный по сравнению с вашим:
struct ContentView: View {
@Environment(\.managedObjectContext)
var viewContext
@Environment(\.verticalSizeClass) var vSizeClass
@Environment(\.horizontalSizeClass) var hSizeClass
var body: some View {
NavigationView {
Form {
Section {
Text("My Content")
}
}
.navigationBarTitle(Text(hSizeClass == .compact ? "Compact" : "Regular"))
}
}
}
Тестирование дает желаемые результаты в симуляторе:
iPhone 8 Plus : Компактная ширина в портретном режиме, Обычная ширина в альбомном режиме
Первоначально Заголовок навигации показывает «Компакт», но когда телефон поворачивается в горизонтальную ориентацию, заголовок обновляется, показывая «Обычный».
Просто убедитесь, что вы тестируете, используя устройства или симуляторы, класс горизонтального размера которых составляет обычный в некоторой ориентации.
Вот официальная документация по этой теме c, как указано в комментарии ОП. Он имеет удобную таблицу с перечнем классов размеров устройств в зависимости от их модели и физической ориентации:
Apple Developer - Руководство по интерфейсу пользователя: адаптивность и компоновка
Удачи!