Corner Radius — τι είναι, ακτίνα στρογγυλοποίησης σε εφαρμογές κινητών

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-02-28 Χρόνος ανάγνωσης: 9 λεπ

Corner radius — παράμετρος στρογγυλοποίησης γωνιών στοιχείων UI, που μετράται σε λογικά pixel (pt σε iOS, dp σε Android) και καθορίζει την ακτίνα του κύκλου που εγγράφεται στη γωνία του ορθογωνίου. Η σωστή επιλογή corner radius επηρεάζει την αντίληψη της διεπαφής: οι μεγάλες στρογγυλοποιήσεις δημιουργούν απαλό, φιλικό τόνο, οι μικρές — αυστηρό και επίσημο. Σύμφωνα με τις Οδηγίες Material Design (Google, 2026), η συνιστώμενη ακτίνα για κάρτες είναι 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 χρησιμοποιείται για: κάρτες και πλακίδια, κουμπιά, πεδία εισαγωγής, modal παράθυρα, εικόνες και avatar, δείκτες προόδου, τσιπ και σήματα. Κάθε τύπος στοιχείου έχει ένα συνιστώμενο εύρος στρογγυλοποίησης, βασισμένο στις οδηγίες Material Design και Human Interface Guidelines.

Σύμφωνα με το Material Design 3 (Google, 2026), η στρογγυλοποίηση γωνιών ταξινομείται σε τρία επίπεδα: small (4 dp) για κουμπιά και πεδία εισαγωγής, medium (8–12 dp) για κάρτες και φύλλα, large (16–28 dp) για διαλόγους και bottom sheets. HIG Apple (2025) συνιστά ενιαίο corner radius 10–12 pt για στοιχεία συστήματος (UIButton, UITextField) και 20+ pt για modal παρουσιάσεις.

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 η στρογγυλοποίηση ορίζεται μέσω του modifier cornerRadius() ή μέσω ClipShape με RoundedRectangle. Το SwiftUI υποστηρίζει επίσης μεμονωμένη στρογγυλοποίηση γωνιών μέσω UIRectCorner σε συνδυασμό με clipped() και overlay().

swift
// SwiftUI: στρογγυλοποίηση μέσω RoundedRectangle
import SwiftUI

VStack {
    Text("Ακτίνα γωνίας 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 δημιουργεί πιο ομαλή στρογγυλοποίηση χρησιμοποιώντας καμπύλη Bezier τρίτης τάξης αντί για τόξο κύκλου. Το 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 δίνουν σαφείς συστάσεις για τυπικά components. Η βασική αρχή: η στρογγυλοποίηση πρέπει να είναι αισθητή, αλλά να μην εμποδίζει το περιεχόμενο.

Τύπος στοιχείουΣυνιστώμενη ακτίναΠλατφόρμαΣημείωση
Κουμπιά4–8 dp / 8 ptiOS, AndroidΌσο μεγαλύτερο το κουμπί, τόσο μεγαλύτερη η ακτίνα
Κάρτες8–16 dp / 10–12 ptiOS, AndroidMaterial Design: προεπιλογή 12 dp
Πεδία εισαγωγής4–8 dp / 8 ptiOS, AndroidΗ υπερβολικά μεγάλη στρογγυλοποίηση φαίνεται αφύσικη
Modal παράθυρα16–28 dp / 20+ ptiOS, AndroidiOS 18: προεπιλογή 24 pt
Avatar50% του μεγέθουςiOS, AndroidΓια στρογγυλά avatar ακτίνα = μισή πλευρά
Chip/Σήματα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(). Το widget 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 χρησιμοποιείται όταν χρειάζεται να κοπεί μια εικόνα ή σύνθετο widget κατά μήκος στρογγυλεμένου περιγράμματος. Για απλά δοχεία φόντου, το BoxDecoration με borderRadius είναι αρκετό — είναι πιο αποδοτικό επειδή δεν δημιουργεί ξεχωριστό επίπεδο κοπής. Το Material Flutter 3.22+ υποστηρίζει continuous corner radius μέσω ContinuousRectangleBorder.

Συχνές ερωτήσεις

Ποια είναι η διαφορά μεταξύ corner radius σε dp και pt;

dp (density-independent pixels) στο Android και pt (points) στο iOS — είναι λογικές μονάδες που αντιστοιχούν στο φυσικό μέγεθος στην οθόνη ανεξάρτητα από την πυκνότητα pixel. 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 — ένα στυλ στρογγυλοποίησης όπου η γωνία σχηματίζεται όχι από τόξο κύκλου, αλλά από καμπύλη Bezier τρίτης τάξης. Η Apple χρησιμοποιεί αυτό το στυλ από το iOS 7 για όλα τα στοιχεία συστήματος. Οπτικά, το continuous στρογγυλοποίηση φαίνεται πιο ομαλή και φυσική σε σύγκριση με το κλασικό circular στυλ.

Ποιο corner radius να χρησιμοποιήσω για προσαρμοσμένο πληκτρολόγιο;

Συνιστάται 10–12 pt σε iOS (όπως το πληκτρολόγιο συστήματος) και 8–12 dp σε Android. Τα πλήκτρα μέσα στο πληκτρολόγιο μπορεί να έχουν μικρότερη ακτίνα (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 — πιο ομαλή στρογγυλοποίηση μέσω καμπύλης Bezier, χρησιμοποιείται σε iOS από iOS 7.
  • Το Flutter χρησιμοποιεί BorderRadius και ClipRRect για στρογγυλοποίηση δοχείων και κοπή εικόνων.
  • Μην χρησιμοποιείτε περισσότερα από δύο επίπεδα στρογγυλοποίησης σε μία οθόνη για να διατηρήσετε την οπτική ακεραιότητα.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης