Как стать автором
Поиск
Написать публикацию
Обновить

Изнутри: Swift макрос — #Preview

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4.6K
Всего голосов 21: ↑21 и ↓0+21
Комментарии9

Комментарии 9

Спасибо большое за статью!

Очень интересная и круто, что актуальная для проектов со SwiftUI!

Подскажи пожалуйста, как я могу использовать макросы в своем приложении, если минимальная таргет версия 14 iOS?

Привет ?

Я это особо не затрагивал, но макрос #Preview работает и с UIKit:

#Preview {
    let button = UIButton(type: .system)
    button.setTitle("UIKit", for: .normal)
    
    return button
}

На счет iOS 14, сам механизм макросов поддерживается на любой версии оси, главное использовать Xcode 15. Можно создать свой макрос или использовать сторонний. А вот макросы от Apple (SwiftData, Observable, Preview и тд) доступны только от iOS 17.

Отмечу что ничего не мешает поставить таргет в Xcode - iOS 13 и использовать макрос #Preview. Так как код превью не используется для сборки, туда можно смело добавить #if available(iOS 17, *)

Спасибо большое за дополнение. Но получается, что #Preview теперь уже точно не компилируется? Потому что до SDK iOS 17 все попадало в билд и уже вычищалось во время архивации, соответственно нам пришлось обрамлять своими макросами такие превью, так как их компиляция могла задействовать моки, которые складываются в некомпилируемые пакеты и соответственно на CI возникала ошибка компиляции, теперь этого можно избежать с помощью такого макроса?

PS: В Xcode 15 Beta 3, макрос #Preview стал доступен для всех версий iOS. То что я отписывал выше, уже не актуально.

НЛО прилетело и опубликовало эту надпись здесь

Хорошее дополнение, добавил ?

PS: В Xcode 15 Beta 3, макрос #Preview стал доступен для всех версий iOS. То что я отписывал выше, уже не актуально.

Спасибо за статью, сохранил в закладки, правильно понимаю, что я могу использовать #Preview, по сути только для просмотра превью элементов UIKit, как в SUI?

Получается так ?

Как нововведение это:

  • Упрощенный синтаксис

  • Поддержка UIKit

Зарегистрируйтесь на Хабре, чтобы оставить комментарий