Внести изменения

Редактировать эту документацию

Переведите документацию или откройте весь проект на своём компьютере.

Ничего не будет опубликовано, пока вы не решите отправить свою работу.

Окна у выреза

Создавайте нативные окна macOS, прикреплённые к корпусу камеры.

NewNotchWindow создаёт фигурную неактивирующую панель macOS, прикреплённую к корпусу камеры. Wails управляет её нативным расположением, чёрными боковыми областями примыкания, прозрачным внешним холстом, уровнем окна, поведением в пространствах Spaces, а также необязательной анимацией показа и скрытия. Веб-содержимое занимает только запрошенную внутреннюю прямоугольную область. При наведении указателя на окно его webview немедленно становится ключевым, не активируя приложение.

Уведомление Wails у выреза, выдвигающееся вниз из корпуса камеры MacBook, отображающее системные показатели в реальном времени и снова скрывающееся под вырезом
Анимированное уведомление у выреза с постоянным webview и нативными переходами показа и скрытия.
go
alert := app.Window.NewNotchWindow(application.NotchWindowOptions{
    Width:    660,
    Height:   92,
    Animated: true,
    WindowOptions: application.WebviewWindowOptions{
        Name: "alert",
        URL:  "/alert",
    },
})

alert.Show()
alert.Hide()
visible := alert.Visibility()
alert.Close()

Параметры

Поле Тип Значение по умолчанию Описание
Width int 660 Доступная ширина webview внутри нативных фигурных краёв.
Height int 92 Доступная высота webview внутри нативных фигурных краёв.
Animated bool false Сдвигает окно вниз при Show и вверх при Hide.
AnimationSpeed time.Duration 420ms Продолжительность показа. Для скрытия используются две трети этого значения; по умолчанию — 280ms.
Screen *Screen основной дисплей Выбирает конкретный дисплей. Если он не указан, Wails использует основной дисплей.
WindowOptions WebviewWindowOptions значения по умолчанию Задаёт имя, URL или HTML, CSS, JavaScript, сочетания клавиш и другие параметры поведения webview.

NewNotchWindow управляет внешними размерами, положением, рамкой, прозрачностью, политикой изменения размера, классом нативной панели, уровнем окна и поведением в коллекциях. Значения этих полей в WindowOptions намеренно заменяются. Остальные поля сохраняются. Нативное перетаскивание за фон и области перетаскивания CSS отключены, чтобы окно оставалось прикреплённым к корпусу камеры.

Возвращаемый NotchWindow намеренно предоставляет только Show, Hide, Visibility и Close; нативную геометрию нельзя изменить через высокоуровневый дескриптор.

Жизненный цикл

  • Show показывает существующее нативное окно. Если анимация включена, оно выдвигается вниз из-за верхней границы дисплея.
  • Hide сохраняет окно для повторного использования. Если анимация включена, оно сдвигается обратно за верхнюю границу дисплея, прежде чем будет убрано с экрана. Webview, состояние JavaScript, привязки и обработчики событий остаются загруженными, но скрытое окно не реагирует на наведение; чтобы снова показать его, приложение должно вызвать Show.
  • Visibility сообщает текущее состояние нативной видимости.
  • Close безвозвратно уничтожает нативное окно. Прежде чем снова показать это уведомление, создайте новое окно.
  • При наведении указателя окно у выреза выводится на передний план, а его webview получает фокус для немедленного взаимодействия с клавиатурой, при этом панель по-прежнему не активирует приложение.

Каждый вызов NewNotchWindow создаёт независимое окно с собственным содержимым, состоянием видимости и анимации. Окна используют один и тот же нативный уровень, поэтому последний показанный экземпляр или экземпляр, на который последним навели указатель, выводится на передний план и может перекрывать предыдущие экземпляры. Если окна предназначены для разных экранов, каждое из них центрируется относительно корпуса камеры соответствующего экрана. macOS не координирует окна у выреза, принадлежащие разным приложениям; если разные приложения показывают окна в одном месте и на одном уровне, последним выведенное окно оказывается на переднем плане.

При работе с уведомлениями приложения обычно повторно используют скрытое окно или поддерживают собственную очередь в одном webview. Wails не навязывает очередь, замену, автоматическое скрытие или политику единственного окна.

См. пример notch-notification с компактным системным монитором, текущее состояние JavaScript которого сохраняется при многократных циклах показа и скрытия уведомления.

Редактировать страницу

Последнее обновление: