В прошлой статье о разработке приложений на SwiftUI я использовал следующий макрос вокруг блок кода, чтобы он соответсвенно присутствовал только в сборке под Catalyst:
#if targetEnvironment(macCatalyst) if let titlebar = windowScene.titlebar { titlebar.titleVisibility = .hidden titlebar.toolbar = nil } #endif
Подобных макросов в Swift и SwiftUI несколько, например, есть еще
#if os(iOS)
...
#endif
Так как не все API в SwiftUI доступны на всех платформах, то макросы оказываются крайне полезными. Приведу живой пример: focusable
– это модификатор,
недоступный на iOS.
@available(macOS 10.15, tvOS 13.0, watchOS 6.0, *)
@available(iOS, unavailable)
extension View {
public func focusable(_ isFocusable: Bool = true, onFocusChange: @escaping (Bool) -> Void = { _ in }) -> some View
}
Раз так, то если вы пишите код, который должен работать на всех платформах, то вам необходимо обернуть этот модификатор проверяющим макросом.
Да вот беда: сделать этого нельзя! Подобные строки добавленные в цепочку модификаторов вызывают ошибку компиляции:
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.