Corner Radius — 모바일 앱에서 모서리 반경이란

저자: IT Sectr 게시일: 2026-02-28 읽는 시간: 9 분

Corner radius는 UI 요소의 모서리를 둥글게 하는 매개변수로, 논리 픽셀(iOS에서는 pt, Android에서는 dp)로 측정되며 사각형 모서리에 내접하는 원의 반지름을 정의합니다. 올바른 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 또는 SwiftUI의 ClipRRect로 설정.
  • Android에서는 shape(drawable XML), MaterialShapeDrawable 또는 Compose의 ClipRRect로 구현.
  • 과도한 둥글림은 텍스트 가독성을 해치고 가장자리의 콘텐츠를 가릴 수 있음.

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) — 대화상자 및 바텀 시트용. Apple HIG(2025)는 시스템 요소(UIButton, UITextField)에 10~12 pt의 통일된 corner radius를, 모달 프레젠테이션에는 20+ pt를 권장합니다.

iOS의 Corner radius: CALayer와 SwiftUI

iOS에서 모서리 둥글림은 CALayer의 cornerRadius 속성을 통해 구현됩니다. UIKit에서 모든 UIView는 cornerRadius를 설정할 수 있는 레이어를 가지고 있습니다. 더 복잡한 둥글림(다른 모서리에 다른 반경)을 위해서는 UIBezierPath와 함께 maskedCorners 및 CACornerMask를 사용합니다.

swift
// UIKit: CALayer를 통한 둥글림
import UIKit

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

SwiftUI에서는 cornerRadius() 수정자 또는 RoundedRectangle과 함께 ClipShape를 통해 둥글림을 설정합니다. SwiftUI는 clipped() 및 overlay()와 함께 UIRectCorner를 통한 개별 모서리 둥글림도 지원합니다.

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 7부터 iOS에서 사용해 온 둥글림 스타일입니다. 클래식 반경(원형)과 달리 연속 반경은 원호 대신 3차 베지어 곡선을 사용하여 더 부드러운 둥글림을 만듭니다. SwiftUI는 RoundedRectangle의 style: .continuous 매개변수를 통해 이 스타일을 지원합니다. Apple은 시각적으로 더 자연스럽기 때문에 모든 시스템 요소에 continuous corner radius를 권장합니다.

Android의 Corner radius: shape과 Compose

Android에서 모서리 둥글림은 전통적으로 res/drawable 폴더의 XML shape 리소스를 통해 구현됩니다. 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에서는 Modifier의 shape 매개변수를 통해 둥글림을 설정합니다. Compose는 각 모서리와 스타일(CircularShape 또는 CutCornerShape)에 대해 다른 반경을 지원하는 RoundedCornerShape을 제공합니다. Compose는 그래픽 스트로크와 함께 RoundedCornerShape을 통해 continuous corner radius도 지원합니다.

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")
}

Android View 시스템의 MaterialShapeDrawable은 drawable을 다시 생성하지 않고 corner radius를 동적으로 변경할 수 있습니다. 정확한 구성을 위해 ShapeAppearanceModel을 사용하세요: 각 모서리에 대해 개별적으로 cornerFamily(rounded 또는 cut)와 cornerSize를 설정합니다.

올바른 corner radius 선택 방법

Corner radius 선택은 요소 유형, 사용 컨텍스트 및 플랫폼에 따라 달라집니다. 보편적인 규칙은 없지만 Material Design과 Apple HIG는 표준 구성 요소에 대한 명확한 권장 사항을 제공합니다. 주요 원칙: 둥글림은 눈에 띄어야 하지만 콘텐츠를 방해해서는 안 됩니다.

요소 유형권장 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는 화면당 두 단계 이하의 둥글림을 권장합니다: 하나는 컨테이너(카드, 대화상자)용, 다른 하나는 대화형 요소(버튼, 필드)용입니다.

Flutter의 Corner radius

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('사용자 정의 모서리 둥글림'),
)

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

Flutter의 ClipRRect는 이미지나 복잡한 위젯을 둥근 경계선을 따라 자를 필요가 있을 때 사용됩니다. 간단한 배경 컨테이너의 경우 borderRadius와 함께 BoxDecoration으로 충분합니다. 이는 별도의 클리핑 레이어를 만들지 않으므로 더 효율적입니다. Material Flutter 3.22+는 ContinuousRectangleBorder를 통해 continuous corner radius를 지원합니다.

자주 묻는 질문

dp의 corner radius와 pt의 차이점은 무엇인가요?

Android의 dp(density-independent pixels)와 iOS의 pt(points)는 픽셀 밀도와 관계없이 화면의 물리적 크기에 해당하는 논리 단위입니다. 1 dp ≈ 1 pt ≈ 1/160인치입니다. dp와 pt의 corner radius 숫자 값은 플랫폼 간 디자인을 전송할 때 상호 교환하여 사용할 수 있습니다.

위쪽 모서리만 둥글게 하려면 어떻게 하나요?

iOS에서는 CACornerMask와 함께 maskedCorners를 사용: 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는 모서리가 원호가 아닌 3차 베지어 곡선으로 형성되는 둥글림 스타일입니다. Apple은 iOS 7부터 모든 시스템 요소에 이 스타일을 사용하고 있습니다. 시각적으로 연속 둥글림은 클래식 원형 스타일에 비해 더 부드럽고 자연스럽게 보입니다.

사용자 정의 키보드에는 어떤 corner radius를 사용해야 하나요?

iOS에서는 10~12 pt(시스템 키보드와 같이), Android에서는 8~12 dp가 권장됩니다. 키보드 내부의 키는 더 작은 radius(4~6 dp)를 가지거나 둥글림이 없을 수 있습니다. 터치 영역을 늘리려면 둥근 경계선과 버튼 가장자리 사이에 4~8 dp의 padding을 사용하세요.

UITableViewCell에 모서리 둥글림이 적용되지 않는 이유는 무엇인가요?

UITableViewCell은 셀의 배경이 backgroundView에 그려지기 때문에 contentView에서 cornerRadius를 자동으로 상속하지 않습니다. 셀을 둥글게 만들려면 contentView.layer와 backgroundView.layer 모두에 동시에 cornerRadius를 설정하세요. SwiftUI에서는 RoundedRectangle과 함께 .listRowBackground()를 사용하세요.

요약

  • 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 7부터 iOS에서 사용.
  • Flutter는 컨테이너 둥글림과 이미지 자르기에 BorderRadius와 ClipRRect 사용.
  • 시각적 일관성을 유지하려면 한 화면에서 세 단계 이상의 둥글림을 사용하지 마세요.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기