Corner Radius — co to jest, promień zaokrąglenia w aplikacjach mobilnych

Autor: IT Sectr Opublikowano: 2026-02-28 Czas czytania: 9 min

Corner radius — parametr zaokrąglania rogów elementów interfejsu, mierzony w logicznych pikselach (pt w iOS, dp w Androidzie), który określa promień okręgu wpisanego w róg prostokąta. Właściwy wybór corner radius wpływa na odbiór interfejsu: duże zaokrąglenia tworzą miękki, przyjazny ton, małe — surowy i formalny. Według Material Design Guidelines (Google, 2026), zalecany radius dla kart to 8–16 dp, dla przycisków — 4–8 dp. Więcej o zarządzaniu wyglądem elementów przeczytasz w artykule o cieniach w UI.

Najważniejsze

  • Corner radius — promień zaokrąglenia rogów, mierzony w pt (iOS) lub dp (Android).
  • Material Design zaleca 8–16 dp dla kart, 4–8 dp dla przycisków, 16–28 dp dla okien dialogowych.
  • W iOS cornerRadius ustawia się przez CALayer.cornerRadius lub ClipRRect w SwiftUI.
  • W Androidzie zaokrąglanie realizuje się przez shape (drawable XML), MaterialShapeDrawable lub ClipRRect w Compose.
  • Zbyt duże zaokrąglenie pogarsza czytelność tekstu i może ukryć zawartość przy krawędziach.

Co to jest corner radius?

Corner radius — wartość liczbowa określająca stopień zaokrąglenia rogów prostokątnego elementu. Im wyższa wartość, tym bardziej zaokrąglony staje się róg. Przy wartości 0 róg pozostaje prosty (90°), przy wartości równej połowie krótszego boku element zamienia się w koło (dla kwadratu) lub zaokrąglony prostokąt z prostymi bokami (kapsuła).

W projektowaniu mobilnym corner radius stosuje się do: kart i kafelków, przycisków, pól wprowadzania, okien modalnych, obrazów i awatarów, wskaźników postępu, chipów i badge'ów. Każdy typ elementu ma zalecany zakres zaokrąglenia, oparty na wytycznych Material Design i Human Interface Guidelines.

Według Material Design 3 (Google, 2026), zaokrąglanie rogów klasyfikuje się na trzy poziomy: small (4 dp) dla przycisków i pól wprowadzania, medium (8–12 dp) dla kart i arkuszy, large (16–28 dp) dla okien dialogowych i bottom sheetów. HIG Apple (2025) zaleca jednolity corner radius 10–12 pt dla elementów systemowych (UIButton, UITextField) i 20+ pt dla prezentacji modalnych.

Corner radius w iOS: CALayer i SwiftUI

W iOS zaokrąglanie rogów realizuje się przez właściwość cornerRadius w CALayer. W UIKit każdy UIView ma warstwę, w której można ustawić cornerRadius. Do bardziej złożonych zaokrągleń (różne promienie dla różnych rogów) używa się maskedCorners i CACornerMask w kombinacji z UIBezierPath.

swift
// UIKit: zaokrąglanie przez CALayer
import UIKit

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

W SwiftUI zaokrąglanie ustawia się przez modyfikator cornerRadius() lub przez ClipShape z RoundedRectangle. SwiftUI obsługuje również indywidualne zaokrąglanie rogów przez UIRectCorner w kombinacji z clipped() i overlay().

swift
// SwiftUI: zaokrąglanie przez RoundedRectangle
import SwiftUI

VStack {
    Text("Promień narożnika 16")
        .padding()
        .background(
            RoundedRectangle(cornerRadius: 16)
                .fill(Color.blue)
        )
}

// Indywidualne zaokrąglanie rogów
RoundedRectangle(
    cornerSize: CGSize(width: 16, height: 16),
    style: .continuous
)

Continuous corner radius — styl zaokrąglania używany przez Apple w iOS od wersji iOS 7. W przeciwieństwie do klasycznego promienia (circular), continuous radius tworzy bardziej płynne zaokrąglenie dzięki zastosowaniu krzywej Beziera trzeciego stopnia zamiast łuku okręgu. SwiftUI obsługuje ten styl przez parametr style: .continuous w RoundedRectangle. Apple zaleca continuous corner radius dla wszystkich elementów systemowych jako wizualnie bardziej naturalny.

Corner radius w Androidzie: shape i Compose

W Androidzie zaokrąglanie rogów tradycyjnie realizuje się przez zasoby XML shape w folderze res/drawable. Shape określa kształt tła z parametrami cornerRadius i solid. Dla różnych rogów używa się <, bottom, top oraz <right. W Material Design 3 dodano MaterialShapeDrawable z obsługą motywów i dynamicznych kształtów.

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>

W Jetpack Compose zaokrąglanie ustawia się przez parametr shape w Modifier. Compose udostępnia RoundedCornerShape z obsługą różnych promieni dla każdego rogu oraz stylem (CircularShape lub CutCornerShape). Compose obsługuje również continuous corner radius przez RoundedCornerShape w kombinacji z graficznym obrysem.

kotlin
// Jetpack Compose: zaokrąglanie przez 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 = "Karta z niestandardowym zaokrągleniem")
}

MaterialShapeDrawable w Android View System pozwala dynamicznie zmieniać corner radius bez odtwarzania drawable. Użyj ShapeAppearanceModel do precyzyjnej konfiguracji: ustaw cornerFamily (rounded lub cut) i cornerSize dla każdego rogu osobno.

Jak wybrać właściwy corner radius

Wybór corner radius zależy od typu elementu, kontekstu użycia i platformy. Nie ma uniwersalnej reguły, ale Material Design i HIG Apple podają jasne zalecenia dla standardowych komponentów. Główna zasada: zaokrąglenie powinno być zauważalne, ale nie przeszkadzać zawartości.

Typ elementuZalecany radiusPlatformaUwagi
Przyciski4–8 dp / 8 ptiOS, AndroidIm większy przycisk, tym większy radius
Karty8–16 dp / 10–12 ptiOS, AndroidMaterial Design: domyślnie 12 dp
Pola wprowadzania4–8 dp / 8 ptiOS, AndroidZbyt duże zaokrąglenie wygląda nienaturalnie
Okna modalne16–28 dp / 20+ ptiOS, AndroidiOS 18: domyślnie 24 pt
Awatary50% rozmiaruiOS, AndroidDla okrągłych awatarów radius = połowa boku
Chipy / Badge'y16–20 dp / 14 ptAndroidKształt kapsuły przy dużym zaokrągleniu

Zasada kontrastu: elementy z różnym corner radius w jednym interfejsie powinny różnić się co najmniej o 4 dp, aby różnica wizualna była zauważalna. Nie używaj 3 poziomów zaokrąglenia na jednym ekranie — tworzy to szum wizualny. Material Design 3 zaleca używanie nie więcej niż dwóch poziomów zaokrąglenia na ekran: jeden dla kontenerów (karty, okna dialogowe) i jeden dla elementów interaktywnych (przyciski, pola).

Corner radius we Flutter

We Flutter zaokrąglanie rogów realizuje się przez klasę BorderRadius, która przyjmuje wartości Radius.circular() lub Radius.elliptical(). Flutter obsługuje indywidualne zaokrąglanie przez BorderRadius.only() oraz BorderRadius.horizontal()/vertical(). Widget ClipRRect przycina element potomny według zadanego BorderRadius.

dart
// Flutter: zaokrąglanie przez ClipRRect i 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('Niestandardowe zaokrąglanie rogów'),
)

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

ClipRRect we Flutter jest używany, gdy trzeba przyciąć obraz lub złożony widget do zaokrąglonej granicy. Dla prostych kontenerów tła wystarczy BoxDecoration z borderRadius — jest bardziej wydajne, ponieważ nie tworzy osobnej warstwy przycinającej. Material Flutter 3.22+ obsługuje continuous corner radius przez ContinuousRectangleBorder.

Często zadawane pytania

Czym różni się corner radius w dp od pt?

dp (density-independent pixels) w Androidzie i pt (points) w iOS to jednostki logiczne, które odpowiadają fizycznemu rozmiarowi na ekranie niezależnie od gęstości pikseli. 1 dp ≈ 1 pt ≈ 1/160 cala. Wartości liczbowe corner radius w dp i pt można traktować jako wymienne przy przenoszeniu projektu między platformami.

Jak zrobić zaokrąglenie tylko górnych rogów?

W iOS użyj maskedCorners z CACornerMask: layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]. W Android XML — . W Jetpack Compose — RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp). We Flutter — BorderRadius.only(topLeft: Radius.circular(12), topRight: Radius.circular(12)).

Co to jest continuous corner radius?

Continuous corner radius — styl zaokrąglania, w którym róg jest formowany nie po łuku okręgu, ale po krzywej Beziera trzeciego stopnia. Apple używa tego stylu od iOS 7 dla wszystkich elementów systemowych. Wizualnie continuous zaokrąglenie wygląda bardziej płynnie i naturalnie w porównaniu z klasycznym stylem circular.

Jaki corner radius zastosować dla niestandardowej klawiatury?

Zaleca się 10–12 pt w iOS (jak klawiatura systemowa) i 8–12 dp w Androidzie. Klawisze wewnątrz klawiatury mogą mieć mniejszy radius (4–6 dp) lub być bez zaokrąglenia. Aby zwiększyć obszar dotyku, użyj paddingu 4–8 dp między zaokrągloną granicą a krawędzią przycisku.

Dlaczego zaokrąglenie rogów nie działa na UITableViewCell?

UITableViewCell nie dziedziczy cornerRadius z contentView automatycznie, ponieważ tło komórki jest rysowane w backgroundView. Aby zaokrąglić komórkę, ustaw cornerRadius dla contentView.layer i backgroundView.layer jednocześnie. W SwiftUI użyj .listRowBackground() z RoundedRectangle.

Podsumowanie

  • Corner radius — promień zaokrąglenia rogów elementów interfejsu, mierzony w dp (Android) lub pt (iOS).
  • Material Design zaleca 8–16 dp dla kart, 4–8 dp dla przycisków, 16–28 dp dla okien dialogowych.
  • W iOS zaokrąglanie ustawia się przez CALayer.cornerRadius (UIKit) lub RoundedRectangle (SwiftUI).
  • W Androidzie — przez shape XML (View System) lub RoundedCornerShape (Jetpack Compose).
  • Continuous corner radius — bardziej płynne zaokrąglenie przez krzywą Beziera, stosowane w iOS od wersji iOS 7.
  • Flutter używa BorderRadius i ClipRRect do zaokrąglania kontenerów i przycinania obrazów.
  • Nie używaj więcej niż dwóch poziomów zaokrąglenia na jednym ekranie, aby zachować integralność wizualną.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również