SwiftUI dev
1.2K subscribers
87 photos
38 videos
1 file
75 links
Mobile development, SwiftUI, Compose, feel free to reach me: @lexkraev

По вопросам рекламы: @lexkraev

Статистика/цены: @lexkraev_ads
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Xcode multi-cursor feature

Think everybody knows about this but whatever )))
This media is not supported in your browser
VIEW IN TELEGRAM
По-умолчанию, если вы добавляете кнопку в ячейку, вся ячейка будет реагировать на action этой кнопки.

Для ожидаемого поведения используйте модификатор .buttonStyle(PlainButtonStyle()) (или .buttonStyle(BorderedButtonStyle()), доступный с iOS 15)

By default, if you add a button to a SwiftUI's cell, all the cell's area will react to button's action.

To fix this, use .buttonStyle(PlainButtonStyle()) modifier (or .buttonStyle(BorderedButtonStyle()) available from iOS 15)

#howto
This media is not supported in your browser
VIEW IN TELEGRAM
Синтаксис if-let (и guard-let) в Swift 5.7 стал проще

New in Swift 5.7, the if-let syntax is even shorter 🔥 (it also works with guard-let)
This media is not supported in your browser
VIEW IN TELEGRAM
Расширяющиеся карточки 🌄🌅 Посмотреть код здесь

Expanding flex cards using SwiftUI 🌄🌅 You may find code here

#trytodo #tasty #groovy #getsources
This media is not supported in your browser
VIEW IN TELEGRAM
Именно так, начиная с xcode 13, можно поставить breakpoint внутри такого замыкания 👨🏻‍💻

You can use special tool - Column Breakpoints - to set a breakpoint inside that kind of closure 👨🏻‍💻
This media is not supported in your browser
VIEW IN TELEGRAM
Варианты открытий кнопки меню в виде 🍔 Код здесь

Cooking hamburgers 🍔 Code is here

#tasty #getsources
Media is too big
VIEW IN TELEGRAM
Кастомизируем таб бар Код можно найти здесь

Customising and animating tab bar 🌊 using SwiftUI Code is here

#howto #tasty #groovy #getsources

@swiftui_dev
This media is not supported in your browser
VIEW IN TELEGRAM
Концепт магазина кросс 👟🤙🏻 Код здесь

Sneakers shop concept 👟🤙🏻 Code is here

#tasty #getsources
В SwiftUI отсутствует метод viewDidLoad(), самый близкий по смыслу: onAppear. Можно сэмулировать поведение viewDidLoad() следующим модификатором.

There is no viewDidLoad() equivalent method in SUI, the closest one is onAppear. Actually we can simulate viewDidLoad() behavior with custom modifier.

#howto
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация из рекламы 🍟 Код здесь

Fast food cafe animation (have seen in the commercial) 🍟 Code is here

#tasty #groovy #getsources #trytodo

@swiftui_dev
Разница в использовании async let.

The difference of using async let explained in a code example.

#readthis
Media is too big
VIEW IN TELEGRAM
Нарисуем и подсветим циферблат у часов Panerai ⌚️ Код доступен на boosty

Panerai watches ⌚️ Code is available on boosty

#trytodo #tasty
Font hints 🖖🏻

#groovy
SwiftUI dev pinned a photo
This media is not supported in your browser
VIEW IN TELEGRAM
Очередной непростой челлендж 🤘🏻 Создадим лоадер 📶 Код здесь

Another pretty difficult challenge 🤘🏻 Developing loader 📶 Code is here

#trytodo #tasty

@swiftui_dev
This media is not supported in your browser
VIEW IN TELEGRAM
Необычные вертикальные часы 📶 ⌚️ Код здесь

Unusual vertical watches 📶 ⌚️ Code is here

#tasty

@swiftui_dev
This media is not supported in your browser
VIEW IN TELEGRAM
Навигация

Один из блоков вопросов на iOS - собеседовании - архитектура приложений. При этом почти в любой архитектуре вопросы навигации всегда находятся сбоку от обсуждения. Более того, для навигации разрабатывают свои паттерны. Одними из таких являются координатор и навигатор.

Начиная с SwiftUI 1.0 Apple практически на каждом WWDC рассказывает про работу с MVVM, как будто забывая про роутинг. Да, нам показали NavigationView, NavigationLink, но не покидало ощущение, что Apple опять представили что-то промежуточное. Многие стали писать свои обертки над этим API, чтобы сделать работу удобнее. И наконец в iOS 16 Apple представили новое API навигации, которое так долго ждали.

Вместо NavigationView (deprecated) теперь нужно использовать NavigationStack. Экран для перехода будет определять модификатор navigationDestination.

Будем честны, многие команды до сих пор используют роутинг на UIKit в проектах на SwiftUI. Даже те, кто пытались разобраться в NavigationView, в конечном итоге возвращались обратно в UIKit. С появлением нового API навигации такой подход - поворот не туда. С другой стороны, новое API требует минимальный таргет у проекта iOS 16.0 . Что делать? Использовать бэкпорт! Можете создать свой тестовый проект, чтобы поработать с этой библиотекой. Мой сэмпл здесь.

#switfpm #howto #getsources #groovy