- xcode 26.0 Beta 3, Swift 6, Минимальное целевое развертывание 18,0 < /li>
iPhone 16 Simulator, работающий в iOS 26,0 < /li>
< /ul>
Иногда в этом конфигурации. О ориентации устройства (симулятор) при запуске приложения и изменяется ли ориентация. Другими словами, главная вставка в ландшафтной ориентации является противоречивой .
Проблема может быть продемонстрирована с помощью следующего кода, который использует GeometryReader для измерения размера экрана и вставки безопасной области:
struct ContentView: View {
var body: some View {
GeometryReader { geo in
VStack {
Text("\(geo.safeAreaInsets.top)")
Spacer()
HStack {
Text("\(geo.safeAreaInsets.leading)")
Spacer()
Text("\(String(describing: geo.size))")
Spacer()
Text("\(geo.safeAreaInsets.trailing)")
}
Spacer()
Text("\(geo.safeAreaInsets.bottom)")
}
.padding(.horizontal)
}
.border(.red)
}
}
< /code>
Шаги по воспроизведению: < /p>
Запустите код на симуляторе iPhone 16, начиная с ориентации портрета. Обратите внимание на верхнюю вставку. Сравните верхнюю вставку с вставкой с шага 2. Сравните верхнюю вставку снова. < /Li>
< /ol>
Некоторые примеры запуска: < /p>
xcode 26.0 Beta 3 + iPhone 16 Симулятор. 18.5: Top вставка всегда 0 -> OK
✔ xcode 16.4 + iPhone 16 Симулятор, работающий в iOS 26.0: Top вставка всегда 0 -> OK
✔ xcode 16.4 + iPhone 16 Simulator, работающий с ios 18.5: Top INSET всегда 0 -> OK < /p>
IS также пробовал IPS. IPAS также пробовал. Хотя вставки отличаются для разных версий iOS, они последовательны по портретной и ландшафтной ориентации. Так что нет проблем. Однако, если он остается ошибкой, которая не решается быстро, мне было бы интересно найти обходной путь. < /P>
Один обходной путь-это игнорировать верхнюю вставку с безопасным районом при запуске на iPhone в ориентации ландшафта, но это кажется грязно. В GeometryReader не помогает:
Код: Выделить всё
GeometryReader { geo in
// ...
}
.id(UUID()) // 👈 doesn't help
.border(.red)
Подробнее здесь: https://stackoverflow.com/questions/797 ... rientation