Неявные аннотации в SwiftUI и их влияние на .task
- Протокол View добавляет аннотацию MainActor своему свойству body
- View.task добавляет аннотацию _inheritActorContext своему параметру action
- Поэтому при использовании .task внутри body можно вызывать MainActor функции без await
- Протокол View добавляет аннотацию MainActor своему свойству body
- View.task добавляет аннотацию _inheritActorContext своему параметру action
- Поэтому при использовании .task внутри body можно вызывать MainActor функции без await
👍20🤡8👎4🔥1
Горизонтальный скролл в секциях UICollectionView с помощью orthogonalScrollingBehavior
- До iOS 13 горизонтальный скролл секций внутри коллекции реализовывался с помощью UIScrollView
- В iOS 13 все упростилось с появлением
- В посте разбирается, как переехать на новый способ организации лэйаута
- До iOS 13 горизонтальный скролл секций внутри коллекции реализовывался с помощью UIScrollView
- В iOS 13 все упростилось с появлением
UICollectionViewCompositionalLayout
с поддержкой orthogonalScrollingBehavior- В посте разбирается, как переехать на новый способ организации лэйаута
Artur Gruchała
Bidirectional collection view with orthogonalScrollingBehavior
Before iOS 13, if you wanted to have a vertical collection view with horizontally scrolling sections it required embedding a scroll view inside the collection view cell, passing the model around, handling touch events, a lot of delegation, and complicated…
👍25❤1❤🔥1
Возможное появление макросов в Swift
У любого языка программирования есть как минимум одна проблема: он либо не поддерживает макросы, либо, наоборот, поддержка макросов у него есть.
В Swift появился пропозал, который предлагает перевести язык из первой категории во вторую. Автор объясняет его смысл следующим образом. Многие новые языковые фичи – просто синтаксический сахар, который просто сокращает более сложные конструкции, а не позволяет делать что-то принципиально новое. Введение в язык таких фичей – сложный трейд-офф. Макросы помогут не переусложнять язык встроенным сахаром, а оставить его подключение на откуп каждому разработчику.
🤔Подробный пропозал
💬Обсуждение на форуме
У любого языка программирования есть как минимум одна проблема: он либо не поддерживает макросы, либо, наоборот, поддержка макросов у него есть.
В Swift появился пропозал, который предлагает перевести язык из первой категории во вторую. Автор объясняет его смысл следующим образом. Многие новые языковые фичи – просто синтаксический сахар, который просто сокращает более сложные конструкции, а не позволяет делать что-то принципиально новое. Введение в язык таких фичей – сложный трейд-офф. Макросы помогут не переусложнять язык встроенным сахаром, а оставить его подключение на откуп каждому разработчику.
🤔Подробный пропозал
💬Обсуждение на форуме
Twitter
For ages, Swift has had one problem: it has no macro system. Now we're excited to look forward to a new problem: it may have a macro system https://t.co/ZUgXgBCl12
👍21👎15😁2
Разборы системных приложений от канала Код Воробья
📆Как устроен Календарь: скролл с пейджингом и ячейки с двухслойными картинками для оптимизации скролла
🧮Как устроен Калькулятор: сцены и сетка кнопок на фреймах
👋Как устроен онбоардинг в App Store: UIScrollView и стеки вьюшек
Подписывайтесь на канал, помимо таких разборов там много других классных штук!
📆Как устроен Календарь: скролл с пейджингом и ячейки с двухслойными картинками для оптимизации скролла
🧮Как устроен Калькулятор: сцены и сетка кнопок на фреймах
👋Как устроен онбоардинг в App Store: UIScrollView и стеки вьюшек
Подписывайтесь на канал, помимо таких разборов там много других классных штук!
🔥43👍15👏3👎2🥰2😱2🤡2🤔1
Книга про дженерики в Swift
Слава Пестов из команды Swift выложил первую часть книги про то, как работают дженерики под капотом:
- Какие ключевые идеи лежат в основе реализации дженериков
- Погружение в общие принципы работы компилятора Swift и его компонентов
- Детали реализации дженериков: разбор AST, generic signatures, substitution maps, conformances generic environments
👉Книгу можно прочитать в PDF, 219 страниц
Слава Пестов из команды Swift выложил первую часть книги про то, как работают дженерики под капотом:
- Какие ключевые идеи лежат в основе реализации дженериков
- Погружение в общие принципы работы компилятора Swift и его компонентов
- Детали реализации дженериков: разбор AST, generic signatures, substitution maps, conformances generic environments
👉Книгу можно прочитать в PDF, 219 страниц
👍61🔥25👏2❤🔥1
Отображение имен функций в git diff
В статье рассказывается, как можно кастомизировать вывод команды git diff, чтобы вместо названий файлов, в которых произошли изменения, показывались заголовки конкретных функций.
В статье рассказывается, как можно кастомизировать вывод команды git diff, чтобы вместо названий файлов, в которых произошли изменения, показывались заголовки конкретных функций.
👍8🤔4
NavigationSplitView в SwiftUI
- NavigationSplitView позволяет реализовывать приложения с лэйаутом в несколько колонок.
- Его можно настроить для работы либо с двумя, либо с тремя колонками.
- Одна из вьюх автоматически заворачивается в сайдбар, две другие – в NavigationStack.
- Видимостью колонок можно управлять программно с помощью типа NavigationSplitViewVisibility.
- Также можно настраивать ширину колонок и их визуальный стиль.
- NavigationSplitView позволяет реализовывать приложения с лэйаутом в несколько колонок.
- Его можно настроить для работы либо с двумя, либо с тремя колонками.
- Одна из вьюх автоматически заворачивается в сайдбар, две другие – в NavigationStack.
- Видимостью колонок можно управлять программно с помощью типа NavigationSplitViewVisibility.
- Также можно настраивать ширину колонок и их визуальный стиль.
👍7🤡3
Flux на SwiftUI
Самая частая архитектура, использующаяся в связке со SwiftUI – MVVM. Но ее реализация часто доставляет много проблем и сложностей. 3 ноября пройдет вебинар Николая Балакланова, на котором он расскажет про архитектуру Flux и проведет воркшоп по реализации с ее помощью небольшого приложения. А сам вебинар является частью еще большего курса, на который вы тоже сможете записаться при желании – "iOS Developer. Professional" от OTUS.
Дата: 3 ноября, 20:00
Регистрация
Самая частая архитектура, использующаяся в связке со SwiftUI – MVVM. Но ее реализация часто доставляет много проблем и сложностей. 3 ноября пройдет вебинар Николая Балакланова, на котором он расскажет про архитектуру Flux и проведет воркшоп по реализации с ее помощью небольшого приложения. А сам вебинар является частью еще большего курса, на который вы тоже сможете записаться при желании – "iOS Developer. Professional" от OTUS.
Дата: 3 ноября, 20:00
Регистрация
🤡35👎17🤔4👍1
Шаблоны для дизайна Live Activities от Apple
Apple добавили Sketch и XD шаблоны для макетов Live Activities.
Apple добавили Sketch и XD шаблоны для макетов Live Activities.
🔥17
Xcode 14 Single Size App Icon
- В Xcode 14 появилась невероятная возможность – вместо ручной нарезки иконок приложения под разные размеры загрузить одно изображение 1024х1024, которое Xcode будет ресайзить сам.
- Эта фича доступна только для iOS и watchOS.
- Если вам нужно подкрутить дизайн иконок в зависимости от их размера, все еще можно задать их по отдельности.
- В Xcode 14 появились новые размеры иконок со сторонами 114px, 128px, 136px и 192px.
- В Xcode 14 появилась невероятная возможность – вместо ручной нарезки иконок приложения под разные размеры загрузить одно изображение 1024х1024, которое Xcode будет ресайзить сам.
- Эта фича доступна только для iOS и watchOS.
- Если вам нужно подкрутить дизайн иконок в зависимости от их размера, все еще можно задать их по отдельности.
- В Xcode 14 появились новые размеры иконок со сторонами 114px, 128px, 136px и 192px.
👍72😱28😁7🔥6👏2❤🔥1🌚1
Как упростить Package.swift
Если вы подключаете одну и ту же зависимость сразу ко многим таргетам, вы можете вынести ее описание в отдельную переменную и переиспользовать ее. А вот тут можно посмотреть этот подход на максималках.
Если вы подключаете одну и ту же зависимость сразу ко многим таргетам, вы можете вынести ее описание в отдельную переменную и переиспользовать ее. А вот тут можно посмотреть этот подход на максималках.
👍32🤡25🤯6👎2
Как работает звук
Главный лонгрид недели – Bartosz Ciechanowski, которого вы знаете по крутейшим интерактивным статьям о принципах работы GPS и механических часов, выпустил новый материал. В нем он разбирает основные принципы того, как в атмосфере передаются звуки, и что влияет на то, что именно мы слышим.
Главный лонгрид недели – Bartosz Ciechanowski, которого вы знаете по крутейшим интерактивным статьям о принципах работы GPS и механических часов, выпустил новый материал. В нем он разбирает основные принципы того, как в атмосфере передаются звуки, и что влияет на то, что именно мы слышим.
👍45🔥9💯5
Periphery – инструмент для обнаружения неиспользуемого кода
- Periphery собирает ваш проект, анализирует его структуру, мутирует граф зависимостей и в итоге выявляет неиспользуемый код.
- Помимо неиспользуемых деклараций классов, протоколов и структур, Periphery умеет делать и более сложные проверки. Например, находить неиспользуемые параметры функций, enum cases, переменные, которые были инициализированы, но не использованы.
- Можно подключить к Xcode для локальной работы или настроить на CI.
- Periphery собирает ваш проект, анализирует его структуру, мутирует граф зависимостей и в итоге выявляет неиспользуемый код.
- Помимо неиспользуемых деклараций классов, протоколов и структур, Periphery умеет делать и более сложные проверки. Например, находить неиспользуемые параметры функций, enum cases, переменные, которые были инициализированы, но не использованы.
- Можно подключить к Xcode для локальной работы или настроить на CI.
❤🔥82👍14👎2
Разбор частых ошибок в работе со Swift Concurrency
В статье разбираются неочевидные особенности работы async-await, с которыми не помогает компилятор, и их влияние на ваш код. Например, поведение очередей различается на симуляторе и устройстве.
В статье разбираются неочевидные особенности работы async-await, с которыми не помогает компилятор, и их влияние на ваш код. Например, поведение очередей различается на симуляторе и устройстве.
Wojciech Kulik
Swift Concurrency - Things They Don't Tell You
Swift Concurrency encourages people to just jump in, add async-await to an existing code, and run some Tasks not really knowing what is going on under the hood. Unfortunately, there are many traps around concurrency and no... the compiler doesn't check everything.
👍41
Как писать CLI тулинг на Swift
- ArgumentParser – фреймворк от Apple, который дает возможность описывать интерфейс CLI программы с помощью структур.
- Благодаря этому можно очень просто создавать инструменты с большим количеством команд и подкоманд.
- В статье подробно разбирается пример разработки такого инструмента с ввводом и валидацией пользовательских данных и обработкой ошибок.
- ArgumentParser – фреймворк от Apple, который дает возможность описывать интерфейс CLI программы с помощью структур.
- Благодаря этому можно очень просто создавать инструменты с большим количеством команд и подкоманд.
- В статье подробно разбирается пример разработки такого инструмента с ввводом и валидацией пользовательских данных и обработкой ошибок.
👍22👎1
Градиент в Swift Charts
В статье разбирается, как можно сконфигурировать Bar Chart из Swift Charts таким образом, чтобы цвет градиента соответствовал значениям по оси Y. Получается очень классное решение всего в 15 строк кода.
В статье разбирается, как можно сконфигурировать Bar Chart из Swift Charts таким образом, чтобы цвет градиента соответствовал значениям по оси Y. Получается очень классное решение всего в 15 строк кода.
🔥9👍1
Обновление SFSymbols c 1000 новых символов
Вышло обновление приложения SFSymbols от Apple:
- 1000 новых символов
- Поддержка variable color
- Улучшения рендеринга
Вышло обновление приложения SFSymbols от Apple:
- 1000 новых символов
- Поддержка variable color
- Улучшения рендеринга
👍31🔥12
Swift-index-store – библиотека для работы с индексами компилятора
- Во время компиляции проекта swiftc и clang генерируют детальные индексы для исходного кода. Модель данных этих индексов публичная, но не задокументированная.
- Swift-index-store – набор инструментов для работы с этой моделью данных. Под капотом крутится сишная libIndexStore, являющаяся частью LLVM.
- Больше деталей про модель данных индекса можно почитать здесь.
- Во время компиляции проекта swiftc и clang генерируют детальные индексы для исходного кода. Модель данных этих индексов публичная, но не задокументированная.
- Swift-index-store – набор инструментов для работы с этой моделью данных. Под капотом крутится сишная libIndexStore, являющаяся частью LLVM.
- Больше деталей про модель данных индекса можно почитать здесь.
GitHub
GitHub - MobileNativeFoundation/swift-index-store: Library to read from Swift / clang source code indexes
Library to read from Swift / clang source code indexes - MobileNativeFoundation/swift-index-store
👍4🔥3❤1