easy_dev991 – Telegram
easy_dev991
628 subscribers
37 photos
21 videos
3 files
175 links
Делюсь интересными находками/лайфхаками в процессе разработки под iOS, и возможно ты найдешь что-то полезное для себя!

GitHub: https://github.com/easydev991
Download Telegram
easy_dev991
#ios #swiftui #scrollview #scrollviewreader #scrollto Скроллим к нужному элементу
#ios #swiftui #scrollview #scrollto

На днях застрял со скроллом к нужному элементу и думал "что же не так?".
У меня есть список элементов в ForEach, внутри массив с Identifiable-элементами, но scrollTo(id) не работает.

Все оказалось очень просто - нужно явным образом добавить модификатор .id для всех элементов в цикле ForEach.

Потом вспомнил, что у меня уже есть статья на эту тему 😁
5😁5😴1
#xcode #simulator #bug

Вчера обновил Xcode до релизной версии 26.1, и второй день подряд ноут сильно греется и шумит вентиляторами.
В чем же дело?

В "мониторинге активности" там висит ReportCrash, который грузит процессор 140%+.
Но что за краши?

Открыл приложение "консоль", и увидел там десятки отчетов о краше для MercuryPosterExtension (кто бы еще знал, что это).

Вот кусок крашлога:

Coalition: com.apple.CoreSimulator.SimDevice.15175812-BCE6-41D0-B391-CEF8416AE15F [12203]
Responsible Process: SimulatorTrampoline [2600]


Несложно предположить, что дело в симуляторе. Оказалось, что запущенный симулятор с iOS 26.1 постоянно ловит какие-то системные краши, но визуально этого не видно.

Так что если вы уже обновились до Xcode 26.1, то рекомендую не использовать симуляторы iOS 26.1 на постоянной основе, иначе есть риск словить постоянную нагрузку на процессор из-за ReportCrash 🤪
8
#ios #swift #swiftui #bug

Угадайте, на каком из скриншотов у нас iOS 26 😁

А вот и код:

struct DemoToolbarOpacity: View {
var body: some View {
NavigationStack {
Color.green.ignoresSafeArea()
.toolbar {
ToolbarItem(placement: .topBarLeading) {
if false {
Button("Left") {
print("tap left button")
}
}
}
ToolbarItem(placement: .topBarTrailing) {
Button("right") {
print("tap right button")
}
.opacity(0)
}
}
}
}
}


Вывод:
В iOS 26 больше нельзя использовать opacity для скрытия кнопки - нужно явным образом закрывать кнопку проверкой if/else 👏
5
#ios #xcode #bug

Любопытная аналитика про размер iOS-приложений, собранных в Xcode 26.0.1 и Xcode 26.1 на примере приложения с площадками для тренировок:
- При сборке из Xcode 26.0.1 приложение весит около 11 мб
- При сборке из Xcode 26.1 приложение весит уже 16.5 мб
- При сборке из Xcode 26.1 после доработок (предстоящий релиз) вес почему-то снизился до 15.5 мб, хотя кода стало больше 🙄

Откуда взялись дополнительные 5 мб, эпл 🤯?
👍4😴2
#ios #swiftui #confirmationdialog #bug

Любопытный баг в SwiftUI при работе с confirmationDialog в навбаре.

Во вложении 2 видео, где я делаю одно и то же действие, но во втором видео диалог появляется повторно без триггера с моей стороны.

Код для первого видео (где все ок):

.toolbar {
if !entries.isEmpty {
ToolbarItem(placement: .topBarTrailing) {
deleteAllButton
}
}
}


Код для второго видео (где баг):

.toolbar {
ToolbarItem(placement: .topBarTrailing) {
if !entries.isEmpty {
deleteAllButton
}
}
}
👍1
#ios #swift #swiftui #bug #binding

Кажется, что разница такая небольшая, но в первом случае сборка успешная, а во втором - сборка падает, и в логах Xcode ничего не показывает, а ведь можно долго и упорно дебажить, вот незадача 🤯
🤯4👍1
#ios #appstore #appstoreconnect

Сегодня модераторы одобрили релиз моего нового приложения с тренировками (с четвертого раза), и я узнал на личном опыте, почему же в аппстор пропускают клонов телеграм 🙈

Если интересно узнать, ставьте 👍

Ссылка на гитхаб с новым приложением тут.
👍14
🔥2
#ios #cursor

Если вдруг cursor стал падать в ошибку CoreSimulator при попытке запуска тестов или сборки через xcodebuild, то нужно сказать ему, чтобы для запуска этих команд использовал required_permissions: ['all'] - это нигде не надо настраивать в проекте, а надо буквально сказать это в запросе.

Если вы не в курсе: с недавнего обновления cursor больше не может работать с симуляторами iOS в режиме sandbox, и вот такая простая команда уже не будет работать:

xcodebuild -project SwiftUI-SotkaApp.xcodeproj -scheme SwiftUI-SotkaApp -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 13 Pro,OS=18.6' build


Хотя в предыдущих версиях cursor это нормально работало 🤔

Причем эта же самая команда исправно работает в терминале, но курсор вот брыкается, пока не скажешь ему использовать required_permissions: ['all'] 🙄
👍2
#ios #appstoreconnect #fastlane #bug

Битва за скриншоты с appstoreconnect продолжается.

Вот тут официальные требования apple к скриншотам для appstoreconnect.

На скриншоте fastlane выдает ошибку из-за того, что apple не принимают скриншоты размером 422*514 (ultra 3), хотя в их же требованиях эти параметры указаны как корректные.

Похожая проблема была с автоматизацией для скриншотов iphone - там appstoreconnect не принимает скриншоты 16/17 Pro Max, хотя в их же документации они указаны как подходящие.

Баг на баге, что тут еще скажешь.
🤯2👀1
#ios #swift #xcode #bug

Слева - таргет Apple Watch
Справа - таргет основного приложения для iPhone

В обоих таргетах версия Swift 6.0 в Build Settings.

Если для часов закомментировать вариант с String(localized:) и раскомментировать вариант с NSLocalizedString, то ошибка уходит - чудеса 😁

Баг на баге 🙈
🤯3