Разработка Tab Bar навигации iOS-приложения

Вступление Разработка Tab Bar навигации iOS-приложения — одна из наших ключевых компетенций. Когда к нам приходит проект с навигацией на таббаре, мы начинаем с системного компонента `UITabBarController`. Apple рекомендует его для приложений с двумя-пятью равнозначными разделами. Кажется, что всё

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Разработка Tab Bar навигации iOS-приложения
Простой
от 1 дня до 3 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Вступление

Разработка Tab Bar навигации iOS-приложения — одна из наших ключевых компетенций. Когда к нам приходит проект с навигацией на таббаре, мы начинаем с системного компонента UITabBarController. Apple рекомендует его для приложений с двумя-пятью равнозначными разделами. Кажется, что всё просто: перетащил контроллер, настроил вкладки — готово. Но нюансы появляются сразу, как только нужен кастомный внешний вид, badge с динамическим счётчиком или конкретное поведение при повторном тапе на активную вкладку. Сертифицированные специалисты с 7-летним опытом — мы реализовали таббар-навигацию в десятках проектов, от новостных приложений до банковских клиентов. Набили шишки на каждой из типичных ошибок и теперь гарантируем, что ваш таббар пройдёт ревью App Store с первого раза. Стоимость базовой настройки таббара составляет от 1000 до 3000 рублей.

Типичные сложности

Кастомная настройка внешнего вида. С iOS 15 Apple изменила систему кастомизации — UITabBar.appearance() перестал работать для части параметров. Теперь правильный путь: UITabBarAppearance + UITabBarItemAppearance. Если этого не учесть, на iOS 15+ таббар получает белый или серый фон вместо кастомного, а приложение выглядит сломанным:

let appearance = UITabBarAppearance() appearance.configureWithOpaqueBackground() appearance.backgroundColor = .systemBackground tabBar.standardAppearance = appearance tabBar.scrollEdgeAppearance = appearance 

Этот фрагмент задаёт единый фон для обоих состояний. Мы всегда его добавляем в шаблон проекта — это экономит 20–30 минут отладки на новом SDK.

Badge-счётчики. tabBarItem.badgeValue = "3" работает из коробки, но красный круг нельзя изменить по цвету без дополнительных телодвижений. Начиная с iOS 10 появилось свойство badgeColor, но его часто упускают из виду. Если нужна совсем нестандартная форма — например, квадратный badge с закруглёнными углами — приходится создавать кастомный overlay поверх иконки вкладки. Сравнение подходов:

Метод Сложность Гибкость
badgeColor Низкая Только цвет
setBadgeTextAttributes Средняя Текст и тень
Кастомный UIView Высокая Полная кастомизация

Для 90% сценариев достаточно badgeColor. Мы используем кастомный view только когда нужно анимировать badge (например, пульсация) — это бывает раз в пять проектов.

Когда нужен кастомный badge-виджет? Если требуется анимированный badge (пульсация, смена цвета по событию) или нестандартная форма (треугольник, скруглённый квадрат), стандартные средства не подходят. Мы разработали reusable компонент, который добавляется как subview к tabBarButton и синхронизируется с badgeValue.

Повторный тап на активную вкладку. По умолчанию ничего не происходит. Пользователь ожидает, что список прокрутится вверх. Реализация через UITabBarControllerDelegate:

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { guard let nav = viewController as? UINavigationController, let top = nav.topViewController, let scroll = top.view.subviews.first(where: { $0 is UIScrollView }) as? UIScrollView else { return } scroll.setContentOffset(.zero, animated: true) } 

Этот код — универсальное решение. Мы добавили его в свою библиотеку компонентов и используем в каждом проекте. Экономит 30 минут на внедрение. Готовое решение работает в 5 раз быстрее, чем написание собственного с нуля.

Скрытие таббара при прокрутке — ещё один частый запрос. Реализуется через наблюдение за contentOffset UIScrollView. Мы прячем таббар анимацией вместе с контентом, чтобы не было дёрганий. Этот паттерн описан в документации Apple в разделе HIG.

Как настроить кастомный внешний вид таббара на iOS 15+?

В iOS 15–17 сломалась прямая установка tintColor и barTintColor. Вместо этого используется UITabBarAppearance. Выполните три шага:

  1. Создайте UITabBarAppearance.
  2. Установите backgroundColor или backgroundEffect.
  3. Присвойте standardAppearance и scrollEdgeAppearance.

Сравнение с iOS 14: в iOS 14 можно было обойтись одной строчкой tabBar.barTintColor = ..., теперь это в 3 раза больше кода, но гибкость выше — можно задать разные стили для обычного состояния и при прокрутке. Мы всегда настраиваем оба, чтобы избежать белого фона на iOS 15+.

Почему повторный тап на вкладку не скроллит вверх?

Это известная проблема: UITabBarController не вызывает scroll-to-top по умолчанию. Причина — Apple оставила эту логику разработчику. Мы решаем это через делегат, как показано выше. Более того, если внутри вкладки несколько скролл-вью (например, Carousel + список), нужно определить, какой именно скроллить. Мы используем first(where:) — для стандартных иерархий этого достаточно.

SwiftUI

В SwiftUI используем TabView с .tabItem модификатором. С iOS 18 появился новый Tab тип и сайдбар-поддержка для iPad. Однако для сложной кастомной анимации или badge с динамическим обновлением TabView пока не дотягивает. В таких случаях мы оборачиваем UITabBarController через UIViewControllerRepresentable. Это даёт полный контроль без потери производительности — всего 40–50 строк кода.

Что входит в работу

  • Настройка UITabBarController или TabView с нужным количеством вкладок.
  • Кастомный внешний вид через UITabBarAppearance с учётом iOS 15+.
  • Badge-счётчики с обновлением из сервиса уведомлений (APNs/FCM).
  • Scroll to top при повторном тапе на вкладку.
  • Скрытие таббара при прокрутке (опционально).
  • Настройка глубоких ссылок (deep linking) для каждой вкладки.
  • Адаптация под iPad: вместо таббара можно использовать split view.

Сроки

Задача Время
Базовая настройка таббара 1 день
Кастомный дизайн 0.5 дня
Badge и уведомления 0.5–1 день
Scroll-to-top и скрытие 0.5 дня
Адаптация под iPad 1–2 дня

Закажите разработку Tab Bar навигации с нашей помощью. Получите консультацию и точную оценку вашего проекта — просто напишите нам с описанием функционала. Сокращаем время разработки на 30% за счёт готовых компонентов.