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

GitHub: https://github.com/easydev991
Download Telegram
#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, хотя в их же документации они указаны как подходящие.

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

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

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

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

Баг на баге 🙈
🤯3
This media is not supported in your browser
VIEW IN TELEGRAM
#ios #appstoreconnect

Долгожданный релиз обновления «сотки» с приложением для Apple Watch 🎉

В общей сложности делал приложение на часы в течение 23 дней (после работы и по выходным).

И что я вам скажу … удивлен, что часы не умеют в групповой UserDefaults, то есть для синхронизации остается по умолчанию либо WatchConnectivity, либо iCloud 🤯
🔥32
#android #kotlin #test #agent

Делаю, значит, андроид-приложение для счетчика дней по аналогии с ios-приложением.
Естественно, использую нейросети, потому что не учить же мне с нуля андроид-разработку, когда мне нужно сделать мелкое оффлайн-приложение из нескольких экранов, и все нейросети очень жестоко тупят.

Детали в комментариях, т.к. телега не дает опубликовать такой большой пост 🤡
1😈1😴1
#ios #assets #svg

Пример действия галки Preserve Vector Data в ассетах iOS-приложения по отношению к векторной картинке (в данном случае svg-файлы).

На скриншотах приложение для часов, и выделена одна и та же svg-иконка, на которой видны изменения при увеличении.

Первый скриншот без галки, второй с галкой - на первом скриншоте у иконки местами торчат целые лесенки пикселей, на втором линии более гладкие (хотя пиксели, конечно, тоже видно).
👍21