Простое кроссплатформенных использование модификаторов в SwiftUI

Когда на Catalyst пишется приложение для macOS, недоступны некоторые модификаторы View. Например, простой refreshable(action:). Его использование вызывает ошибку не компиляции, а исключение в рантайме:

[General] SwiftUI.SwiftUI_UIRefreshControl is not supported when running Catalyst apps in the Mac idiom. See UIBehavioralStyle for possible alternatives. Consider using a Refresh menu item bound to ⌘-R

Из-за этого можно пропустить в продакшн код, который на платформе не работает на самом деле.

Исправить положение можно, отказавшись от модификатора и его функций, можно написать разные компоненты под разные платформы, но есть способ удобнее и лучше: собственный ViewModifier.

Читать далее «Простое кроссплатформенных использование модификаторов в SwiftUI»