На
WWDC25 компания
Apple представила новые компоненты
WebView и
WebPage, которые значительно упрощают интеграцию веб-контента в
SwiftUI приложения, которые доступны с
iOS 18.4.
Что нового:
WebPage: удобная загрузка и управление:
Отслеживание состояния:
@State private var isLoading: Bool = false
@State private var progress: Double = 0.0
WebPage(url: URL(string: "https://t.me/hardworkerIT"))
.onLoadingChanged { loading in
isLoading = loading
}
.onProgressChanged { progress in
self.progress = progress
}
Обработка событий навигации (currentNavigationEvent), таких как ошибки, перенаправления, завершение загрузки.
Сохранение контента:
Теперь есть возможность сохранения веб-контента в следующих форматах:
Снимки экрана (PNG/JPEG).
PDF.
Веб-архивы (полное сохранение страницы).
WebPage(url: someURL)
.saveSnapshot(as: .pdf) { result in
switch result {
case .success(let data):
// Сохраняем PDF
case .failure(let error):
print("Ошибка: \(error)")
}
}
WebArchiveView - просмотр сохранённых веб-страниц:
Есть возможность отображения сохраненных страниц:
WebArchiveView(data: archivedData)
Дополнительные возможности:
- Скролл к определённому элементу на странице.
- Расширенное взаимодействие с JavaScript.
- Кастомные обработчики для ссылок и форм.
Зачем это нужно:
- Проще, чем WKWebView - не нужно писать обёртки для SwiftUI.
- Нативные состояния загрузки - больше никаких кастомных индикаторов.
- Готовые решения для экспорта и архивирования.
Ограничения:
- Требуется iOS 18.4+ / macOS 15.4+.
- Для сложных сценариев (например, кастомные схемы URL) всё ещё может потребоваться WKWebView.
Больше информации доступно в официальной документации.
Вывод:
Новые
API делают работу с веб-контентом в
SwiftUI такой же простой, как и с любыми другими вью. Теперь встраивать браузеры, документацию или веб-интерфейсы стало ещё удобнее!