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), заобљавање углова се класификује на три нивоа: small (4 dp) за дугмад и поља за унос, medium (8–12 dp) за картице и листове, large (16–28 dp) за дијалоге и bottom sheet-ове. 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("Radijus ugla 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. За различите углове користе се <, bottom, top и <right. У 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 = "Картица са прилагођеним заобљењем")
}

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. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође