Tab Bar — mobil ilova ekranining pastki qismida joylashgan, asosiy bo'limlarga tezkor kirishni ta'minlovchi navigatsiya elementi. iOS-da UITabBarController orqali, Android-da esa BottomNavigationView Material Design orqali amalga oshiriladi. Navigatsiya tamoyillari haqida batafsil Human Interface Guidelines Apple sahifasida o'qing.
Asosiy ma'lumotlar
Tab Bar (tab paneli) — mobil ilova ekranining pastki qismida joylashgan grafik interfeys elementi. Ilovaning 3–5 asosiy bo'limiga tezkor kirishni ta'minlaydi. Har bir bo'lim ikonka va matn yorlig'i bilan ifodalanadi. Foydalanuvchi tegishli bo'limga o'tish uchun tabni bosadi. Tab Bar har bir bo'lim ichidagi barcha ekranlarda ko'rinib turadi, doimiy kirish nuqtasini ta'minlaydi.
Apple Tab Bar ni teng ahamiyatga ega ilova bo'limlari uchun ishlatishni tavsiya qiladi. Human Interface Guidelines (2026) ko'rsatadi: «Tab Bar 3–5 tabni ko'rsatadi. Agar ko'proq kerak bo'lsa — oxirgi tab qolganlari bilan «Ko'proq» bandiga aylanadi». Google Material Design (2026) xuddi shu maqsadlar uchun Bottom Navigation ni tavsiya qiladi — 3–5 band, faol tab rang va animatsiya bilan ajralib turadi.
Yuqori tablardan (Top Tab Bar) farqli o'laroq, pastki panel bir qo'l bilan boshqarish uchun qulayroq — bosh barmoq tabiiy ravishda ekranning pastki qismiga yetadi. Nielsen Norman Group (2025) tadqiqoti shuni ko'rsatdiki, pastki navigatsiya diagonali 6 dyuymdan boshlangan smartfonlarda yuqoriga nisbatan vazifani bajarish vaqtini 22% ga qisqartiradi.
UITabBarController — tablar orqali navigatsiyani tashkil qilish uchun o'rnatilgan iOS kontrolleri. Har bir tab odatda UINavigationController da tashkil qilingan o'z ekranlar to'plamini boshqaradi. UITabBarController avtomatik ravishda tizimning yarim shaffof foni va almashishda animatsiya bilan ekranning pastki qismida Tab Bar yaratadi.
import UIKit
class MainTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let homeVC = HomeViewController()
let searchVC = SearchViewController()
let profileVC = ProfileViewController()
homeVC.tabBarItem = UITabBarItem(
title: "Bosh sahifa",
image: UIImage(systemName: "house.fill"),
tag: 0
)
searchVC.tabBarItem = UITabBarItem(
title: "Qidiruv",
image: UIImage(systemName: "magnifyingglass"),
tag: 1
)
profileVC.tabBarItem = UITabBarItem(
title: "Profil",
image: UIImage(systemName: "person.circle.fill"),
tag: 2
)
let homeNav = UINavigationController(rootViewController: homeVC)
let searchNav = UINavigationController(rootViewController: searchVC)
let profileNav = UINavigationController(rootViewController: profileVC)
viewControllers = [homeNav, searchNav, profileNav]
}
}Misoldagi har bir tab UINavigationController ni o'z ichiga oladi, bu bo'lim ichida stek navigatsiyasidan foydalanish imkonini beradi. tabBarItem ikonka, sarlavha va badge ni sozlaydi. Tizim ikonkalar uchun avtomatik ravishda SF Symbols uslubini qo'llaydi — dinamik tur va ko'p ranglilikni qo'llab-quvvatlovchi standart Apple belgilari.
BottomNavigationView — pastki navigatsiya panelini amalga oshiruvchi Material Design Library dan Android komponenti. Android 13+ da yaxshilangan animatsiya va adaptiv xatti-harakatga ega NavigationBarView — uning vorisi ishlatiladi. BottomNavigationView Material Design 3 (Material You) spetsifikatsiyasiga amal qiladi va ilova mavzusini, dinamik ranglarni va almashish animatsiyasini qo'llab-quvvatlaydi.
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val navView: NavigationBarView = binding.navView
val navController = findNavController(R.id.nav_host_fragment)
// BottomNavigation ni NavController ga ulash
navView.setupWithNavController(navController)
// Bildirishnomalar tabida badge ni sozlash
val badge = navView.getOrCreateBadge(R.id.navigation_notifications)
badge.isVisible = true
badge.number = 12
}
}BottomNavigationView komponenti uch uslub bilan Material Design 3 ni qo'llab-quvvatlaydi: default (imzo + ikonka), labeled (kattalashtirilgan imzo) va unlabeled (faqat ikonka). setupWithNavController metodi panelni Navigation Component bilan bog'laydi, ekran o'zgarganda faol tabni avtomatik yangilaydi. Badge-lar getOrCreateBadge orqali yaratiladi va raqamli hamda nuqtali ko'rsatkichlarni qo'llab-quvvatlaydi.
Badge-lar — tab ikonkalaridagi bildirishnomalar, yangi xabarlar yoki vazifalar sonini ko'rsatuvchi raqamli yoki nuqtali ko'rsatkichlar. iOS da badge UITabBarItem dagi badgeValue xususiyati orqali o'rnatiladi. Android da badge-lar BadgeDrawable (Material 3) yoki NavigationBarView dagi getOrCreateBadge orqali boshqariladi.
Badge-lar kuchli jalb qilish vositasidir: Localytics (2025) tadqiqotlari shuni ko'rsatdiki, badge-larga ega ilovalar 7-kunda 18% yuqori retention ga ega. Biroq badge-lardan suiiste'mol qilish (bir vaqtning o'zida 3 dan ortiq) CTR ni 12% ga kamaytiradi. Apple va Google badge ni faqat tegishli bildirishnomalar uchun ko'rsatish va bo'lim ochilganda uni nolga qaytarishni tavsiya qiladi.
| Platforma | Komponent | Badge ni o'rnatish |
|---|---|---|
| iOS | UITabBarItem.badgeValue | tabBarItem.badgeValue = "5" |
| Android | BadgeDrawable | badge.number = 5 |
| iOS | Nuqtali badge | tabBarItem.badgeColor = .red |
| Android | Nuqtali ko'rsatkich | badge.isVisible = true |
Ikkala platforma ham Tab Bar ni keng sozlash imkoniyatlarini taqdim etadi. iOS da fon rangi, faol tabning tint rangi, imzo shriftini o'zgartirish va SF Symbols yoki o'z resurslari orqali maxsus ikonkalar qo'shish mumkin. Android da sozlash Material 3 uslublari, almashish animatsiyasi, ripple effekti va fon rasmi asosidagi dinamik ranglarni o'z ichiga oladi.
// iOS da Tab Bar ni sozlash
let appearance = UITabBarAppearance()
appearance.backgroundColor = .systemBackground
appearance.stackedLayoutAppearance.normal.titleTextAttributes = [
.foregroundColor: UIColor.secondaryLabel,
.font: UIFont.systemFont(ofSize: 11)
]
appearance.stackedLayoutAppearance.selected.titleTextAttributes = [
.foregroundColor: UIColor.systemBlue,
.font: UIFont.boldSystemFont(ofSize: 12)
]
tabBar.standardAppearance = appearance.Android da BottomNavigationView ni sozlash XML atributlari yoki dasturiy ravishda amalga oshiriladi. Material 3 dinamik ranglar konsepsiyasini kiritadi: palitra foydalanuvchining fon rasmidan yaratiladi va avtomatik ravishda komponentlarga qo'llaniladi. Dasturchi mavzu orqali ranglarni bekor qilishi, maxsus tagiga chizish animatsiyasini (indicator) o'rnatishi va ripple effektini sozlashi mumkin.
// Android da BottomNavigationView ni sozlash
val navView = findViewById<NavigationBarView>(R.id.nav_view)
with (navView) {
labelVisibilityMode = NavigationBarView.LABEL_VISIBILITY_LABELED
itemActiveIndicatorStyle = R.style.CustomIndicator
itemRippleColor = ColorStateList.valueOf(
Color.valueOf("#FFE0B2")
)
}
// XML da: app:menu="@menu/bottom_nav_menu"
// XML da: app:itemActiveIndicatorStyle="@style/Widget.Material3.BottomNavigationView.ActiveIndicator"Tab Bar ni loyihalashda platforma tavsiyalari va foydalanish qulayligi tadqiqotlariga rioya qilish muhim. Apple HIG: 5 tadan ko'p bo'lmagan tab, qisqa matn, semantik ikonkalar. Material Design: 3–5 band, faol band ajratilgan, badge hisoblagichi 99 dan oshmasligi kerak. NN Group (2025): pastki navigatsiya bo'limning barcha ekranlarida ko'rinib turishi kerak, aks holda foydalanuvchi kontekstni yo'qotadi.
Asosiy xatolar: 6+ tab («Ko'proq» ni ishlatishga majbur qiladi — topiluvchanlikni pasaytiradi), navigatsiya paytida tablar tartibining o'zgarishi (yo'nalishni yo'qotadi), ichki ekranlarda Tab Bar ni yashirish (navigatsiya langarini yo'qotish). Eng yaxshi amaliyot — barqaror tartib, bir xil ikonkalar va matn yorliqlari, badge faqat foydalanuvchi harakatlari uchun (marketing uchun emas).
Ko'p beriladigan savollar
Apple va Google 3–5 tab ni tavsiya qiladi. Uchdan kam — pastki panelni oqlash uchun bo'limlar yetarli emas. Beshdan ko'p — diqqatni haddan tashqari yuklash, oxirgi tab «Ko'proq» bandiga aylanadi. NN Group (2025) ma'lumotlariga ko'ra optimal son — 4 tab.
Tab Bar — Apple ning iOS pastki paneli (UITabBarController) uchun atamasi. Bottom Navigation — Android dagi analog (BottomNavigationView). Funktsional jihatdan bir xil: 3–5 bo'limga tezkor kirish. Vizual uslubdagi farqlar: iOS — blur effektli yarim shaffof fon, Android — ripple effektli qattiq rang.
Ha, lekin ehtiyot bilan. iOS da — UIViewController da hidesBottomBarWhenPushed = true. Android da — BottomNavigationView da View.GONE. Eng yaxshi amaliyot — faqat to'liq ekranli ekranlarda (fotosurat, video ko'rish) yashirish, lekin qaytganda ko'rsatish. Uzoq yashirish foydalanuvchini chalg'itadi.
iOS da tabBarItem.badgeValue = "N" (satr sifatida) o'rnating. Android da NavigationBarView da getOrCreateBadge(resId) dan foydalaning. Badge avtomatik ravishda raqam bilan qizil doira sifatida ko'rsatiladi. Nolga qaytarish: badgeValue = nil (iOS), removeBadge(resId) yoki badge.isVisible = false (Android).
Home Indicator ga ega qurilmalarda (iPhone X va yangilari) Tab Bar avtomatik ravishda indikatordan yuqoriga ko'tariladi. Tizim ekranning pastki qismiga Safe Area Insets qo'shadi. Dasturchi qo'lda bo'shliqlarni sozlashi shart emas — UIKit va Android SystemUI buni avtomatik boshqaradi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.