Corner radius — UI elementlari burchaklarini yumaloqlash parametri bo'lib, mantiqiy piksellarda (iOS da pt, Android da dp) o'lchanadi va to'rtburchak burchagiga chizilgan aylana radiusini aniqlaydi. Corner radius ni to'g'ri tanlash interfeysni idrok etishga ta'sir qiladi: katta yumaloqlashtirishlar yumshoq, do'stona ohang yaratadi, kichiklari esa qat'iy va rasmiy. Material Design Guidelines (Google, 2026) ma'lumotlariga ko'ra, kartalar uchun tavsiya etilgan radius 8–16 dp, tugmalar uchun 4–8 dp. Elementlarning tashqi ko'rinishini boshqarish haqida batafsil UI dagi soyalar haqidagi maqolada o'qing.
Asosiy ma'lumotlar
Corner radius — to'rtburchak element burchaklarining yumaloqlash darajasini belgilaydigan raqamli qiymat. Qiymat qanchalik yuqori bo'lsa, burchak shunchalik yumaloq bo'ladi. 0 qiymatida burchak to'g'ri (90°) qoladi, kichik tomonning yarmiga teng qiymatda element aylanaga (kvadrat uchun) yoki to'g'ri tomonlari bo'lgan yumaloq to'rtburchakka (kapsulaga) aylanadi.
Mobil dizaynda corner radius quyidagilar uchun ishlatiladi: kartalar va plitkalar, tugmalar, kiritish maydonlari, modal oynalar, tasvirlar va avatarlar, borish ko'rsatkichlari, chiplar va badge lar. Har bir element turi Material Design va Human Interface Guidelines ga asoslangan tavsiya etilgan diapazonga ega.
Material Design 3 (Google, 2026) ma'lumotlariga ko'ra, burchaklarni yumaloqlash uch darajaga bo'linadi: small (4 dp) tugmalar va kiritish maydonlari uchun, medium (8–12 dp) kartalar va varaqlar uchun, large (16–28 dp) dialoglar va bottom sheet lar uchun. HIG Apple (2025) tizim elementlari (UIButton, UITextField) uchun yagona corner radius 10–12 pt va modal taqdimotlar uchun 20+ pt tavsiya qiladi.
iOS da burchaklarni yumaloqlash CALayer dagi cornerRadius xususiyati orqali amalga oshiriladi. UIKit da har bir UIView cornerRadius o'rnatilishi mumkin bo'lgan qatlamga ega. Murakkabroq yumaloqlashtirishlar (turli burchaklar uchun turli radiuslar) uchun UIBezierPath bilan birgalikda maskedCorners va CACornerMask ishlatiladi.
// UIKit: CALayer orqali yumaloqlash
import UIKit
let cardView = UIView()
cardView.backgroundColor = .systemBackground
cardView.layer.cornerRadius = 12
cardView.layer.maskedCorners = [
.layerMinXMinYCorner,
.layerMaxXMinYCorner
]
SwiftUI da yumaloqlash cornerRadius() modifikatori yoki RoundedRectangle bilan ClipShape orqali o'rnatiladi. SwiftUI shuningdek clipped() va overlay() bilan birgalikda UIRectCorner orqali individual burchak yumaloqlashni qo'llab-quvvatlaydi.
// SwiftUI: RoundedRectangle orqali yumaloqlash
import SwiftUI
VStack {
Text("Burchak radiusi 16")
.padding()
.background(
RoundedRectangle(cornerRadius: 16)
.fill(Color.blue)
)
}
// Individual burchak yumaloqlash
RoundedRectangle(
cornerSize: CGSize(width: 16, height: 16),
style: .continuous
)
Continuous corner radius — Apple tomonidan iOS 7 chiqarilishidan beri iOS da ishlatiladigan yumaloqlash uslubi. Klassik radiusdan (circular) farqli o'laroq, continuous radius aylana yoyi o'rniga uchinchi darajali Bezier egri chizig'idan foydalanib, silliqroq yumaloqlash yaratadi. SwiftUI bu uslubni RoundedRectangle da style: .continuous parametri orqali qo'llab-quvvatlaydi. Apple continuous corner radius ni barcha tizim elementlari uchun vizual jihatdan tabiiyroq deb tavsiya qiladi.
Android da burchaklarni yumaloqlash an'anaviy ravishda res/drawable papkasidagi XML shape resurslari orqali amalga oshiriladi. Shape cornerRadius va solid parametrlari bilan fon shaklini belgilaydi. Turli burchaklar uchun <, bottom, top va <right ishlatiladi. Material Design 3 ga mavzular va dinamik shakllarni qo'llab-quvvatlaydigan MaterialShapeDrawable qo'shilgan.
<!-- res/drawable/bg_card.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners android:radius="12dp" />
</shape>
Jetpack Compose da yumaloqlash Modifier dagi shape parametri orqali o'rnatiladi. Compose har bir burchak uchun turli radiuslar va uslubni (CircularShape yoki CutCornerShape) qo'llab-quvvatlaydigan RoundedCornerShape ni taqdim etadi. Compose shuningdek grafik kontur bilan birgalikda RoundedCornerShape orqali continuous corner radius ni qo'llab-quvvatlaydi.
// Jetpack Compose: RoundedCornerShape orqali yumaloqlash
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
Card(
shape = RoundedCornerShape(
topStart = 16.dp,
topEnd = 16.dp,
bottomStart = 4.dp,
bottomEnd = 4.dp
),
elevation = CardDefaults.cardElevation(defaultElevation = 4.dp)
) {
Text(text = "Maxsus yumaloqlash bilan karta")
}
MaterialShapeDrawable Android View System da drawable ni qayta yaratmasdan corner radius ni dinamik o'zgartirish imkonini beradi. Aniq sozlash uchun ShapeAppearanceModel dan foydalaning: har bir burchak uchun alohida cornerFamily (rounded yoki cut) va cornerSize ni o'rnating.
Corner radius ni tanlash element turiga, foydalanish kontekstiga va platformaga bog'liq. Universal qoida yo'q, lekin Material Design va HIG Apple standart komponentlar uchun aniq tavsiyalar beradi. Asosiy printsip: yumaloqlash sezilarli bo'lishi kerak, lekin tarkibga xalaqit bermasligi kerak.
| Element turi | Tavsiya etilgan radius | Platforma | Izoh |
|---|---|---|---|
| Tugmalar | 4–8 dp / 8 pt | iOS, Android | Tugma qanchalik katta bo'lsa, radius shunchalik katta |
| Kartalar | 8–16 dp / 10–12 pt | iOS, Android | Material Design: standart 12 dp |
| Kiritish maydonlari | 4–8 dp / 8 pt | iOS, Android | Juda katta yumaloqlash g'ayritabiiy ko'rinadi |
| Modal oynalar | 16–28 dp / 20+ pt | iOS, Android | iOS 18: standart 24 pt |
| Avatarlar | O'lchamning 50% | iOS, Android | Dumaloq avatarlar uchun radius = tomonning yarmi |
| Chip lar / Badge lar | 16–20 dp / 14 pt | Android | Katta yumaloqlashda kapsula shakli |
Kontrast qoidasi: bitta interfeysdagi turli corner radius ga ega elementlar vizual farq sezilarli bo'lishi uchun kamida 4 dp ga farq qilishi kerak. Bir ekranda 3 daraja yumaloqlashdan foydalanmang — bu vizual shovqin yaratadi. Material Design 3 ekranda ikkita darajadan ko'p bo'lmagan yumaloqlashni tavsiya qiladi: biri konteynerlar uchun (kartalar, dialoglar) va biri interaktiv elementlar uchun (tugmalar, maydonlar).
Flutter da burchaklarni yumaloqlash Radius.circular() yoki Radius.elliptical() qiymatlarini qabul qiladigan BorderRadius sinfi orqali amalga oshiriladi. Flutter BorderRadius.only() va BorderRadius.horizontal()/vertical() orqali individual yumaloqlashni qo'llab-quvvatlaydi. ClipRRect vidjeti berilgan BorderRadius bo'yicha bola elementni kesadi.
// Flutter: ClipRRect va Container orqali yumaloqlash
import 'package:flutter/material.dart';
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(16.0),
topRight: Radius.circular(16.0),
bottomLeft: Radius.circular(4.0),
bottomRight: Radius.circular(4.0),
),
),
child: Text('Maxsus burchak yumaloqlash'),
)
// ClipRRect bilan Image
ClipRRect(
borderRadius: BorderRadius.circular(12.0),
child: Image.network(
'https://example.com/image.jpg',
fit: BoxFit.cover,
),
)
ClipRRect Flutter da tasvir yoki murakkab vidjetni yumaloq chegara bo'ylab kesish kerak bo'lganda ishlatiladi. Oddiy fon konteynerlari uchun borderRadius bilan BoxDecoration yetarli — bu samaraliroq, chunki alohida kesuvchi qatlam yaratmaydi. Material Flutter 3.22+ ContinuousRectangleBorder orqali continuous corner radius ni qo'llab-quvvatlaydi.
Ko'p beriladigan savollar
dp (density-independent pixels) Android da va pt (points) iOS da — piksel zichligidan qat'iy nazar ekrandagi fizik o'lchamga mos keladigan mantiqiy birliklardir. 1 dp ≈ 1 pt ≈ 1/160 dyuym. Corner radius ning dp va pt dagi raqamli qiymatlari platformalar o'rtasida dizaynni ko'chirishda o'zaro almashinadigan sifatida ishlatilishi mumkin.
iOS da CACornerMask bilan maskedCorners dan foydalaning: layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]. Android XML da — . Jetpack Compose da — RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp). Flutter da — BorderRadius.only(topLeft: Radius.circular(12), topRight: Radius.circular(12)).
Continuous corner radius — burchak aylana yoyi bo'ylab emas, balki uchinchi darajali Bezier egri chizig'i bo'ylab shakllanadigan yumaloqlash uslubi. Apple bu uslubni iOS 7 dan beri barcha tizim elementlari uchun ishlatadi. Vizual ravishda continuous yumaloqlash klassik circular uslubiga nisbatan silliqroq va tabiiyroq ko'rinadi.
iOS da 10–12 pt (tizim klaviaturasi kabi) va Android da 8–12 dp tavsiya etiladi. Klaviatura ichidagi tugmalar kichikroq radiusga (4–6 dp) ega bo'lishi yoki yumaloqlanmagan bo'lishi mumkin. Tegish maydonini oshirish uchun yumaloq chegara va tugma chekkasi o'rtasida 4–8 dp padding ishlating.
UITableViewCell avtomatik ravishda contentView dan cornerRadius ni meros qilib olmaydi, chunki hujayraning foni backgroundView da chiziladi. Hujayrani yumaloqlashtirish uchun cornerRadius ni contentView.layer va backgroundView.layer uchun bir vaqtda o'rnating. SwiftUI da RoundedRectangle bilan .listRowBackground() dan foydalaning.
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.