Corner Radius — що це, радіус скруглення в мобільних додатках

Автор: IT Sectr Опубліковано: 2026-02-28 Час читання: 9 хв

Corner radius — параметр скруглення кутів UI-елементів, який вимірюється в логічних пікселях (pt на iOS, dp на Android) і визначає радіус кола, вписаного в кут прямокутника. Правильний вибір corner radius впливає на сприйняття інтерфейсу: великі скруглення створюють м'який, дружній тон, малі — суворий і формальний. За даними Material Design Guidelines (Google, 2026), рекомендований radius для карток — 8–16 dp, для кнопок — 4–8 dp. Докладніше про керування зовнішнім виглядом елементів читайте в статті про тіні в UI.

Головне

  • Corner radius — радіус скруглення кутів, що вимірюється в pt (iOS) або dp (Android).
  • Material Design рекомендує 8–16 dp для карток, 4–8 dp для кнопок, 16–28 dp для діалогів.
  • На iOS cornerRadius задається через CALayer.cornerRadius або ClipRRect в SwiftUI.
  • В Android скруглення реалізується через shape (drawable XML), MaterialShapeDrawable або ClipRRect в Compose.
  • Занадто велике скруглення погіршує читабельність тексту і може приховати вміст біля країв.

Що таке corner radius?

Corner radius — числове значення, що визначає ступінь скруглення кутів прямокутного елемента. Чим вище значення, тим більш округлим стає кут. При значенні 0 кут залишається прямим (90°), при значенні, що дорівнює половині меншої сторони, елемент перетворюється на коло (для квадрата) або на скруглений прямокутник з прямими сторонами (капсула).

В мобільному дизайні corner radius використовується для: карток і плиток, кнопок, полів введення, модальних вікон, зображень і аватарів, індикаторів прогресу, чіпів і бейджів. Кожен тип елемента має рекомендований діапазон скруглення, заснований на гайдлайнах Material Design та Human Interface Guidelines.

За даними Material Design 3 (Google, 2026), скруглення кутів класифікується на три рівні: малий (4 dp) для кнопок і полів введення, середній (8–12 dp) для карток і листів, великий (16–28 dp) для діалогів і боттом-шитів. HIG Apple (2025) рекомендує єдиний corner radius 10–12 pt для системних елементів (UIButton, UITextField) і 20+ pt для модальних презентацій.

Corner radius на iOS: CALayer і SwiftUI

На iOS скруглення кутів реалізується через властивість cornerRadius у CALayer. В UIKit кожен UIView має шар, у якого можна встановити cornerRadius. Для складніших скруглень (різні радіуси для різних кутів) використовується maskedCorners і CACornerMask у комбінації з UIBezierPath.

swift
// UIKit: скруглення через CALayer
import UIKit

let cardView = UIView()
cardView.backgroundColor = .systemBackground
cardView.layer.cornerRadius = 12
cardView.layer.maskedCorners = [
    .layerMinXMinYCorner,
    .layerMaxXMinYCorner
]

В SwiftUI скруглення задається через модифікатор cornerRadius() або через ClipShape з RoundedRectangle. SwiftUI також підтримує індивідуальне скруглення кутів через UIRectCorner у комбінації з clipped() та overlay().

swift
// SwiftUI: скруглення через RoundedRectangle
import SwiftUI

VStack {
    Text("Corner Radius 16")
        .padding()
        .background(
            RoundedRectangle(cornerRadius: 16)
                .fill(Color.blue)
        )
}

// Індивідуальне скруглення кутів
RoundedRectangle(
    cornerSize: CGSize(width: 16, height: 16),
    style: .continuous
)

Continuous corner radius — стиль скруглення, який використовується Apple в iOS з моменту виходу iOS 7. На відміну від класичного радіуса (circular), continuous radius створює більш плавне скруглення за рахунок використання кривої Без'є третього порядку замість дуги кола. SwiftUI підтримує цей стиль через параметр style: .continuous в RoundedRectangle. Apple рекомендує continuous corner radius для всіх системних елементів як візуально більш природний.

Corner radius в Android: shape і Compose

В Android скруглення кутів традиційно реалізується через XML-ресурси shape в папці res/drawable. Shape визначає форму фону з параметрами cornerRadius та solid. Для різних кутів використовується <corners android:bottomLeftRadius="..." />. В Material Design 3 додано MaterialShapeDrawable з підтримкою тем та динамічних форм.

xml
<!-- 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 скруглення задається через параметр shape у Modifier. Compose надає RoundedCornerShape з підтримкою різних радіусів для кожного кута та стилем (CircularShape або CutCornerShape). Compose також підтримує continuous corner radius через RoundedCornerShape у комбінації з графічною обводкою.

kotlin
// Jetpack Compose: скруглення через RoundedCornerShape
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 = "Card з кастомним скругленням")
}

MaterialShapeDrawable в Android View System дозволяє динамічно змінювати corner radius без перестворення drawable. Використовуйте ShapeAppearanceModel для точного налаштування: встановіть cornerFamily (rounded або cut) та cornerSize для кожного кута окремо.

Як вибрати правильний corner radius

Вибір corner radius залежить від типу елемента, контексту використання та платформи. Універсального правила не існує, але Material Design та HIG Apple дають чіткі рекомендації для стандартних компонентів. Основний принцип: скруглення повинно бути помітним, але не заважати вмісту.

Тип елементаРекомендований radiusПлатформаПримітка
Кнопки4–8 dp / 8 ptiOS, AndroidЧим більша кнопка, тим більший radius
Картки8–16 dp / 10–12 ptiOS, AndroidMaterial Design: 12 dp за замовчуванням
Поля введення4–8 dp / 8 ptiOS, AndroidЗанадто велике скруглення виглядає неприродно
Модальні вікна16–28 dp / 20+ ptiOS, AndroidiOS 18: 24 pt за замовчуванням
Аватари50% від розміруiOS, AndroidДля круглих аватарів radius = половина сторони
Чіпи / бейджі16–20 dp / 14 ptAndroidФорма капсули при великому скругленні

Правило контрасту: елементи з різним corner radius в одному інтерфейсі повинні відрізнятися мінімум на 4 dp, щоб візуальна різниця була помітною. Не використовуйте 3 рівні скруглення на одному екрані — це створює візуальний шум. Material Design 3 рекомендує використовувати не більше двох рівнів скруглення на екран: один для контейнерів (картки, діалоги) і один для інтерактивних елементів (кнопки, поля).

Corner radius у Flutter

У Flutter скруглення кутів реалізується через клас BorderRadius, який приймає значення Radius.circular() або Radius.elliptical(). Flutter підтримує індивідуальне скруглення через BorderRadius.only() та BorderRadius.horizontal()/vertical(). Віджет ClipRRect обрізає дочірній елемент за заданим BorderRadius.

dart
// Flutter: скруглення через ClipRRect і Container
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('Кастомне скруглення кутів'),
)

// ClipRRect з Image
ClipRRect(
    borderRadius: BorderRadius.circular(12.0),
    child: Image.network(
        'https://example.com/image.jpg',
        fit: BoxFit.cover,
    ),
)

ClipRRect у Flutter використовується, коли потрібно обрізати зображення або складний віджет по скругленій границі. Для простих фонових контейнерів достатньо BoxDecoration з borderRadius — це продуктивніше, оскільки не створює окремого обрізаючого шару. Material Flutter 3.22+ підтримує continuous corner radius через ContinuousRectangleBorder.

Часті запитання

Чим відрізняється corner radius в dp від pt?

dp (density-independent pixels) в Android та pt (points) в iOS — це логічні одиниці, які відповідають фізичному розміру на екрані незалежно від щільності пікселів. 1 dp ≈ 1 pt ≈ 1/160 дюйма. Числові значення corner radius в dp та pt можна використовувати як взаємозамінні при перенесенні дизайну між платформами.

Як зробити скруглення тільки верхніх кутів?

На iOS використовуйте maskedCorners з CACornerMask: layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]. В Android XML — . В Jetpack Compose — RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp). У Flutter — BorderRadius.only(topLeft: Radius.circular(12), topRight: Radius.circular(12)).

Що таке continuous corner radius?

Continuous corner radius — стиль скруглення, при якому кут формується не по дузі кола, а по кривій Без'є третього порядку. Apple використовує цей стиль з iOS 7 для всіх системних елементів. Візуально continuous скруглення виглядає більш плавним та природним у порівнянні з класичним circular-стилем.

Який corner radius використовувати для кастомної клавіатури?

Рекомендується 10–12 pt на iOS (як системна клавіатура) та 8–12 dp на Android. Клавіші всередині клавіатури можуть мати менший radius (4–6 dp) або бути без скруглення. Для збільшення площі дотику використовуйте padding 4–8 dp між скругленою границею та краєм кнопки.

Чому скруглення кутів не застосовується до UITableViewCell?

UITableViewCell не успадковує cornerRadius від contentView автоматично, оскільки фон комірки відмальовується в backgroundView. Для скруглення комірки встановіть cornerRadius у contentView.layer та backgroundView.layer одночасно. В SwiftUI використовуйте .listRowBackground() з RoundedRectangle.

Підсумки

  • Corner radius — радіус скруглення кутів UI-елементів, що вимірюється в dp (Android) або pt (iOS).
  • Material Design рекомендує 8–16 dp для карток, 4–8 dp для кнопок, 16–28 dp для діалогів.
  • На iOS скруглення задається через CALayer.cornerRadius (UIKit) або RoundedRectangle (SwiftUI).
  • В Android — через shape XML (View System) або RoundedCornerShape (Jetpack Compose).
  • Continuous corner radius — більш плавне скруглення через криву Без'є, використовується в iOS з iOS 7.
  • Flutter використовує BorderRadius та ClipRRect для скруглення контейнерів і обрізки зображень.
  • Не використовуйте більше двох рівнів скруглення на одному екрані для збереження візуальної цілісності.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також