Добавить объявление

WebKit для SwiftUI: новые API для работы с веб-контентом

На 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 такой же простой, как и с любыми другими вью. Теперь встраивать браузеры, документацию или веб-интерфейсы стало ещё удобнее!
    11.07.2025 8 395