Найти в Дзене

Дневник обновления фоторедактора. Начало

Оглавление

На примере обновления фоторедактора WatchTheBirdie вы узнаете как создаются приложения и какие за этим стоят технологии.

В этой статье вы прочитаете:

  • Про меня и этот дневник
  • Предыстория и планы по обновлению моего фоторедактора
  • Что будет в следующих статьях

К каждой статье будет исходный код примеров на Github. Но для этой статьи только пустой проект Xcode для будущих статей.

Про меня и этот дневник

Меня зовут Андрей Зарембо-Годзяцкий, я занимаюсь мобильной разработкой уже больше 10 лет. Я работал в RedMadRobot, Яндекс, OZON, Rambler, Tinkoff Mobile и Банк, Сбер и снова в OZON Банк. Прошел путь от разработчика до руководителя мобильной разработки, архитектора и руководителя продукта.

Если вам нужна консультация по мобильной разработке, напишите мне в Telegram

У меня большой опыт, но я до сих пор чувствую нехватку информации и потребность учиться. Все получается не так, как ожидается, приходится придумывать обходные пути, проявлять фантазию и делать смешанные решения. Я решил записать свой опыт, чтобы помочь тем, кто будут решать схожие задачи.

Я выбрал формат дневника, буду рассказывать что я делаю, почему, зачем и помощью чего. Для вариантов решений расскажу про них и мотивацию выбора. В статьях код будет для иллюстрации конкретных решений, а весь код проекта будет открытым.

Статьи будут выходить раз в неделю в четверг. Объем каждой статьи будет рассчитан на 3-4 минут чтения.

Что я использую в работе
- MacBook Pro 13 M1 c macOS Ventura 13.2.1
- Xcode 14.3.1 c Swift 5

Предыстория проекта

WatchTheBirdie - детский фоторедактор. Мы сделали его вместе с сыном пару лет назад, когда он начал фотографировать. Четырехлетнему ребенку тяжело справляться с системной камерой: слишком много кнопок, нужно уметь читать и нет наклеек. А мне было сложно находить милые фотографии среди сотен размытых и объяснять коллегам цель отправки фото кота.

-2

Мы описали требования к продукту:

  • Простой интерфейс.Только нужные и яркие кнопки, никакого MutltiTouch и сложных жестов, все управляется одним пальцем.
  • Наклейки. Шапки, солнце, радуга, воздушные шарики, их можно масштабировать, вращать и зеркалить, а фото можно редактировать снова
  • Управляют родители. Сохраняют и отправляют фотки только взрослые. Все фото, сделанные детьми хранятся внутри приложения
  • iPhone и iPad на iOS 12. Старый iPad стал детским и папин телефон тоже

Я написал ТЗ, заказал дизайн и через несколько месяцев сын стал делать фотки и украшать их наклейками. Сейчас я решил обновить приложение, потому что дети продолжают пользоваться приложением, а в Appstore его скачивают несколько человек в неделю.

Сейчас фоторедактор полностью бесплатен и скачать его можно в Apple AppStore
-3

Планы по обновлению

  • Переписать интерфейс с UIKit на SwiftUI. Переписать интерфейс с помощью новых технологий, исправить ошибки
  • Добавить AI на основе CoreML. Добавить оценку фото с помощью искусственного интеллекта, фильтры для изображений и управление жестами для съемки селфи с задержкой
  • ASO и маркетинг. Оптимизировать страницу в магазине приложений, научиться зарабатывать
  • Наклейки. Добавить ещё наклеек и эффектов

Что будет в следующих статьях

В дневнике будут не только статьи про решение конкретных задач моего проекта, но и общие статьи о разработке и инструментах.

Что я планирую по фоторедактору:

  1. О проекте. Эта статья. Про сам проект и что я буду делать дальше
  2. Про Кнопки. Про обновление кнопок на SwiftUI, Анимацию, состояния и сокрытие кнопок при скролле
  3. Про панели инструментов. Как создать панели для кнопок, с фоном и узором поверх, добавить туда кнопки
  4. Родительский режим. Как добавить отдельный режим приложения, влияющий на интерфейс и функциональность приложения.
  5. Галерея. Как реализовать галерею фотографий с тремя режимами просмотра и анимироваными переходами между ними
  6. Просмотр фото. Сделать просмотр фото на SwiftUI не так-то легко и поможет мост в UIKit.
  7. Навигация. Как реализовать навигацию по приложению
  8. Редактирование галереи. Как реализовать редактирование галереи
  9. Обрезка фото и поворот. Как сделать обрезку фоток и поворот на SwiftUI c помощью UIKit
  10. Управление наклейками. Как просматривать ленту наклеек и добавлять их на фото, как редактировать
  11. Запрос разрешений. Как сделать так, чтобы можно было запрашивать разрешения в едином простом формате и тестировать состояние, когда не дали доступ
  12. Картинка с камеры. Как получить картинку с камеры и как накладывать фильтры
  13. Фильтры. Как добавить фильтры
  14. Качество фотографий c CoreML. Как реализовать оценку качество фотографий на модели
  15. Собственные фильтры c CoreML. Как реализовать собственные фильтры для
  16. Управление жестами с CoreML. Как добавить распознавание жестов на CoreML
  17. ASO и монетизация. Оптимизировать страницу в магазине приложений, научиться зарабатывать

Помимо дневника я планирую рассказать и про общие темы:

  • Форматы изображений в Xcode. Какие бывают изображения и как используются
  • SwiftUI Preview Provider. Как работает Preview Provider и как его эффективно использовать
  • Swift Combine. Функциональное(реактивное) программирование, где оно помогает, а где лучше не использовать
  • DI, что это и зачем. Про внедрение зависимостей по-простому
  • SF Symbols возможности. Как использовать SF Symbols и что они умеют
  • SwiftUI State. Как SwiftUI работает с состоянием компонентов, когда и как его обновляет.
  • Как поднять и настроить свой VPS. Как работать с VPS, использовать Docker
  • Git. Про Git и как им пользоваться

Оставляйте в комментариях интересующие вас темы, если я смогу про них рассказать - обязательно добавлю в план.

Код к статье на GitHub