easy_dev991
Сервис ничего не хранит, не возвращает и не изменяет. У него есть единственный async throws метод, который принимает в себя модель для отправки запроса. Вопрос с моего собеса: сделаем сервис структурой или final-классом?
Когда в прошлый раз вы думали, что использовать для модели в ячейке коллекции/таблицы: класс или структуру?
Anonymous Poll
15%
Каждый раз думаю, это важно, вот на днях прямо было
16%
Обычно не думаю, просто делаю как принято в проекте
18%
Давно не было UIKit в работе, не приходится думать об этом
7%
Не думаю, делаю модель классом - вдруг понадобится использовать преимущества reference-типа
40%
Не думаю, делаю структуру
3%
Какая вообще разница? Можно одинаково использовать и то, и другое
🔥2
#ios #swift #swiftui #contest
Нужно сверстать стек, где есть несколько
Должно получиться примерно как на картинке.
Шрифт для
Шрифт для
Не используем
Вот готовые модели для превью:
Кто первый сделает, тот молодец 🚀
Нужно сверстать стек, где есть несколько
Text с одинаковой структурой:
private struct UserInfo: Identifiable {
let id = UUID()
let label: String
let value: String
}
Должно получиться примерно как на картинке.
Шрифт для
label: .system(size: 20, weight: .bold)Шрифт для
value: .system(size: 16, weight: .regular)Не используем
markdown в тексте.Вот готовые модели для превью:
let items: [UserInfo] = [
.init(label: "Почта", value: "test@example.com"),
.init(label: "Телефон", value: "+79123456789"),
.init(
label: "Адрес",
value: "117513, г. Москва, ул. Профсоюзная, д. 129, корп. 3, кв. 117, подъезд 5, этаж 8"
)
]
Кто первый сделает, тот молодец 🚀
👌3
#ios #swift #swiftui #hint
На днях добавлял SwiftUI-вьюху внутрь UIKit-ячейки для экрана с коллекцией.
Вьюха просто принимает на вход данные и показывает что-то внутри себя.
⚠️Но есть нюанс: на iOS < 16 нельзя просто так добавить SwiftUI-вьюху в ячейку - для этого нужно делать костыль с хостингом и т.д.
И вот я все сделал, но наткнулся на проблему: при первом появлении ячейки вьюха не успевает целиком отобразиться, и получается полная фигня. Зато если прокрутить экран вниз или вверх, чтобы вьюха исчезла, и снова вернуться к той ячейке, то все отлично.
На этом экране еще и кнопка есть для скролла к той самой ячейке - и при первом скролле к ней она выглядит плохо.
Решается эта проблема очень просто - можно добавить вьюхе два состояния: "загрузка" и "готово".
В "загрузке" показываем любой принятый в проекте индикатор загрузки или скелетон, а в "готово" - обычное состояние вьюхи.
Ну и в саму вьюху внутрь
✅Теперь при первом рендере этой ячейки появится индикатор загрузки, а потом сразу корректное состояние.
На днях добавлял SwiftUI-вьюху внутрь UIKit-ячейки для экрана с коллекцией.
Вьюха просто принимает на вход данные и показывает что-то внутри себя.
⚠️Но есть нюанс: на iOS < 16 нельзя просто так добавить SwiftUI-вьюху в ячейку - для этого нужно делать костыль с хостингом и т.д.
И вот я все сделал, но наткнулся на проблему: при первом появлении ячейки вьюха не успевает целиком отобразиться, и получается полная фигня. Зато если прокрутить экран вниз или вверх, чтобы вьюха исчезла, и снова вернуться к той ячейке, то все отлично.
На этом экране еще и кнопка есть для скролла к той самой ячейке - и при первом скролле к ней она выглядит плохо.
Решается эта проблема очень просто - можно добавить вьюхе два состояния: "загрузка" и "готово".
В "загрузке" показываем любой принятый в проекте индикатор загрузки или скелетон, а в "готово" - обычное состояние вьюхи.
Ну и в саму вьюху внутрь
onAppear добавляем смену состояний.✅Теперь при первом рендере этой ячейки появится индикатор загрузки, а потом сразу корректное состояние.
❤2🔥1
👀3👍2
#ios #appstore #appstoreconnect
Опубликовал приложение с площадками для воркаута под своим аккаунтом, т.к. отключили
Перед публикацией предполагал, что могут возникнуть сложности, т.к. вряд ли одобрят два приложения с почти одинаковым названием и полностью одинаковым дизайном.
Решил попробовать сначала отправить приложение на проверку, и не удалять старое приложение.
В результате получил временный бан от эпол в appstoreconnect, и они запросили мои документы (уже в третий раз за год).
Отправил им документы, бан сняли, как и в прошлые разы.
При этом завернули новое приложение по причине Spam 😁
Там перечисляли, что у меня и дизайн копирует существующее приложение, и код, и вообще полный дубликат.
Спросил их, можно ли опубликовать новое приложение после удаления старого - сказали можно.
✅Согласовал с владельцем сайта удаление старого приложения, удалил его, и теперь могу обновлять приложение уже в своем аккаунте в максимально удобном формате (через
Опубликовал приложение с площадками для воркаута под своим аккаунтом, т.к. отключили
Xcode Cloud для РФ и я не мог больше обновлять приложение на аккаунте владельца сайта workout.su. Перед публикацией предполагал, что могут возникнуть сложности, т.к. вряд ли одобрят два приложения с почти одинаковым названием и полностью одинаковым дизайном.
Решил попробовать сначала отправить приложение на проверку, и не удалять старое приложение.
В результате получил временный бан от эпол в appstoreconnect, и они запросили мои документы (уже в третий раз за год).
Отправил им документы, бан сняли, как и в прошлые разы.
При этом завернули новое приложение по причине Spam 😁
Там перечисляли, что у меня и дизайн копирует существующее приложение, и код, и вообще полный дубликат.
Спросил их, можно ли опубликовать новое приложение после удаления старого - сказали можно.
✅Согласовал с владельцем сайта удаление старого приложения, удалил его, и теперь могу обновлять приложение уже в своем аккаунте в максимально удобном формате (через
fastlane).App Store
Приложение «Street Workout Площадки» — App Store
Загрузите «Street Workout Площадки» от Oleg Eremenko в App Store. См. скриншоты, оценки и отзывы, советы пользователей и другие похожие на «Street Workout…
❤4🔥2
Нужно настроить публикацию сборок через fastlane с хранением ключа в приватном репозитории. Ваши действия?
Anonymous Poll
14%
Много раз уже делали такое, сделаю еще раз
10%
Доводилось настраивать fastlane, разберусь при необходимости - у них же есть документация
36%
Не доводилось настраивать самостоятельно, поищу инфу в интернете и разберусь
14%
Закину задачу в нейросеть и получу готовое решение, во что бы то ни стало
0%
Не буду настраивать, слишком много возни, можно без приватного репозитория или без fastlane
6%
Буду комбинировать разные варианты из предложенных и получу готовое решение
20%
Вообще не знаю, что это и как это делается, делегирую кому-нибудь другому, или не буду делать
🔥2
easy_dev991
Рассказал про 5 способов, от нерабочих до рабочих, почитать можно в платном канале: - базовая подписка - продвинутая подписка - сеньорская подписка
Сегодня был в центре города и решил на личном опыте узнать как сбербанк устанавливает свое банковское приложение на айфоны своих лояльных пользователей.
1. Взял талончик и ждал в очереди 11 минут (хотя по ощущениям прошла вечность)
2. Меня пригласили для установки приложения, но сделать этого не смогли 🙈
Полную версию можно прочитать в платном канале:
- базовая подписка
- продвинутая подписка
- сеньорская подписка
1. Взял талончик и ждал в очереди 11 минут (хотя по ощущениям прошла вечность)
2. Меня пригласили для установки приложения
Полную версию можно прочитать в платном канале:
- базовая подписка
- продвинутая подписка
- сеньорская подписка
Telegram
Tribute
This bot helps content creators receive financial support from their followers directly in the app.
😁11👀1
#ios #swift #swiftui #uikit
Все еще верстаете на ките и пользуетесь таблицами/коллекциями для создания списков? При этом хочется использовать в этих экранах SwiftUI?
Не беда! В iOS 16 добавили нативную интеграцию SUI в ячейках с помощью contentConfiguration.
Вот так нужно было в apple презентовать этот инструмент😁, а не тихонечко сказать в одном из видео, что вот теперь вы можете в ячейках добавлять SUI.
Алгоритм работы с этой штукой:
1️⃣ Верстаем вьюху для ячейки на SUI
2️⃣ В самой ячейке делаем проверку на iOS 16, и если версия подходит, то добавляем вьюху как показано в документации, можно обращаться напрямую к свойству
3️⃣ Если версия iOS < 16, то либо не показываем обновленный UI (😁), либо используем костыли с
Важный момент: если просто добавить SUI-вьюху в ячейку и не настроить отступы для конфигурации, то будут добавлены дефолтные отступы по горизонтали и вертикали.
Чтобы такой фигни не было, нужно вручную поверх конфигурации добавить отступы через метод margins.
Пример настройки
Весь код для демо-ячейки можно посмотреть в гитхабе.
Все еще верстаете на ките и пользуетесь таблицами/коллекциями для создания списков? При этом хочется использовать в этих экранах SwiftUI?
Не беда! В iOS 16 добавили нативную интеграцию SUI в ячейках с помощью contentConfiguration.
Вот так нужно было в apple презентовать этот инструмент😁, а не тихонечко сказать в одном из видео, что вот теперь вы можете в ячейках добавлять SUI.
Алгоритм работы с этой штукой:
1️⃣ Верстаем вьюху для ячейки на SUI
2️⃣ В самой ячейке делаем проверку на iOS 16, и если версия подходит, то добавляем вьюху как показано в документации, можно обращаться напрямую к свойству
contentConfiguration внутри ячейки3️⃣ Если версия iOS < 16, то либо не показываем обновленный UI (😁), либо используем костыли с
UIHostingControllerВажный момент: если просто добавить SUI-вьюху в ячейку и не настроить отступы для конфигурации, то будут добавлены дефолтные отступы по горизонтали и вертикали.
Чтобы такой фигни не было, нужно вручную поверх конфигурации добавить отступы через метод margins.
Пример настройки
contentConfiguration с нужными отступами:
func setup(with viewModel: DemoCollectionCellViewModel) {
if #available(iOS 16.0, *) {
contentConfiguration = UIHostingConfiguration {
SwiftUIView(viewModel: viewModel)
}.margins(.horizontal, 12) // <- вот тут задали отступы по горизонтали
} else {
setupOld(with: viewModel)
}
}
Весь код для демо-ячейки можно посмотреть в гитхабе.
Apple Developer Documentation
UIHostingConfiguration | Apple Developer Documentation
A content configuration suitable for hosting a hierarchy of SwiftUI views.
❤3🔥2
#ios #swift #swiftui #swiftdata #cloudkit #hint
Создали новое iOS-приложение с использованием Swift Data и CloudKit, но оно крашится после добавления контейнера?
Не беда!
На скриншоте исправление краша в только что созданном приложении, где включена галка
Все поля в моделях
Если оставить поле
При этом краша не будет, если снять галку с контейнера в настройках проекта 😐
Будет здорово, если в новом
Создали новое iOS-приложение с использованием Swift Data и CloudKit, но оно крашится после добавления контейнера?
Не беда!
На скриншоте исправление краша в только что созданном приложении, где включена галка
Host in CloudKit и добавлен ваш CloudKit Container.Все поля в моделях
Swift Data должны быть или опциональными, или иметь дефолтное значение.Если оставить поле
timestamp без дефолтного значения, будет краш:Thread 1: Fatal error: Could not create ModelContainer: SwiftDataError(_error: SwiftData.SwiftDataError._Error.loadIssueModelContainer, _explanation: nil).При этом краша не будет, если снять галку с контейнера в настройках проекта 😐
Будет здорово, если в новом
Xcode появятся более прозрачные ошибки на этот случай (бету не ставил).🔥8
#ios #xcode
Приятная новость в
Xcode получил новую функцию кеширования компиляции, которую можно включить вручную и которая ускоряет циклы сборки и тестирования для Swift и C‑подобных языков.
Эта фича сохраняет результаты компиляции для набора исходных файлов и при повторной компиляции тех же файлов использует их из кеша, сокращая время сборки.
Наибольшую выгоду это дает при переключении между ветками или выполнении чистых сборок.
На мой взгляд это здорово, скоро проверим на практике 👍
Приятная новость в
Xcode 26 RC (ссылка), краткий перевод ниже.Xcode получил новую функцию кеширования компиляции, которую можно включить вручную и которая ускоряет циклы сборки и тестирования для Swift и C‑подобных языков.
Эта фича сохраняет результаты компиляции для набора исходных файлов и при повторной компиляции тех же файлов использует их из кеша, сокращая время сборки.
Наибольшую выгоду это дает при переключении между ветками или выполнении чистых сборок.
На мой взгляд это здорово, скоро проверим на практике 👍
Apple Developer Documentation
Xcode 26 Release Notes | Apple Developer Documentation
Update your apps to use new features, and test your apps against API changes.
❤10
Послезавтра релиз новых версий iOS/macOS и т.д. Какие у вас планы на обновление?
Anonymous Poll
23%
В числе первых обновляюсь на бету, так что обновлюсь сразу
20%
Бету не тестирую, но обновлюсь сразу
15%
Подожду первые обзоры и обновлюсь через несколько дней или неделю-другую, если у большинства все ок
35%
Подожду 1-2 релиза, пока поправят неизбежные баги, посмотрю обзоры и обновлюсь, когда будет ок
8%
Не буду обновляться, меня устраивает старая версия (версию в комменты)
❤2
У вас работает SwiftUI Preview в Xcode 26?
Anonymous Poll
54%
Да
26%
Частично - в некоторых местах проекта не работает
19%
Нет, везде перестали работать
🔥2