overlay рисует кнопку поверх ScrollView и может перекрывать последние элементы. safeAreaInset резервирует для кнопки место в безопасной области прокрутки.
Практическая задача: разбор кода swift
overlay рисует кнопку поверх ScrollView и может перекрывать последние элементы. safeAreaInset резервирует для кнопки место в безопасной области прокрутки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
struct ContentView: View {
var body: some View {
ScrollView {
content
.padding(20)
}
.background(Color(.systemGroupedBackground))
.overlay(alignment: .bottom) {
continueButton
}
}
}
struct ContentView: View {
var body: some View {
ScrollView {
content
.padding(20)
}
.background(Color(.systemGroupedBackground))
.safeAreaInset(edge: .bottom) {
continueButton
}
}
}
Ответ
overlay рисует кнопку поверх ScrollView и может перекрывать последние элементы. safeAreaInset резервирует для кнопки место в безопасной области прокрутки.
Первый вариант не уменьшает доступную контенту область на высоту кнопки: padding(20) не обязан компенсировать её реальную высоту. Во втором нижний inset учитывается контейнером, поэтому контент можно прокрутить выше закреплённой кнопки.
Для фиксированного нижнего действия обычно удобнее safeAreaInset. Проверьте spacing, фон панели, клавиатуру и Dynamic Type; высота кнопки может меняться. Два определения ContentView показаны как альтернативы: в одном модуле под одинаковым именем их одновременно оставлять нельзя.
Источник: developer.apple.com.