본문 바로가기
iOS/SwiftUI

[SwiftUI] CGFloat, CGPoint, CGSize, CGRect

by Bokoo14 2024. 1. 31.

SwiftUI에서 레이아웃과 그래픽 작업을 할 때 사용되는 핵심 데이터 타입들이다.

1차원 벡터

CGFloat

  • 정의: Core Graphics에서 사용하는 부동 소수점 타입
  • 용도: 길이, 두께, 각도 등 단일 수치를 나타낼 때 사용
  • 특징: 플랫폼에 따라 크기가 다를 수 있음 (64비트 환경에서는 Double과 같고, 32비트 환경에서는 Float과 같음)
  • 예시:
    let width: CGFloat = 100.0
    let opacity: CGFloat = 0.5
    let cornerRadius: CGFloat = 8.0

Double

  • 정의: Swift 표준 라이브러리의 부동 소수점 타입
  • 용도: 일반적인 계산이나 값 저장에 사용
  • 특징: 항상 64비트 정밀도를 가짐
  • 예시:
    let distance: Double = 42.195

2차원 벡터

CGPoint

  • 정의: 2D 좌표 공간의 을 나타내는 구조체
  • 구조: x와 y 좌표로 구성 (x: CGFloat, y: CGFloat)
  • 용도: 화면이나 뷰 내의 위치를 지정할 때 사용
  • 예시:
    let point = CGPoint(x: 50, y: 100)

CGSize

  • 정의: 2D 공간에서의 너비와 높이를 나타내는 구조체
  • 구조: 너비와 높이로 구성 (width: CGFloat, height: CGFloat)
  • 용도: 뷰나 이미지의 크기를 지정할 때 사용
  • 특징: 위치 정보는 없고 크기만 나타냄
  • 예시:
    let size = CGSize(width: 200, height: 150)

4차원 벡터 (정확히는 2D 공간의 사각형)

CGRect

  • 정의: 2D 공간에서의 사각형을 나타내는 구조체
  • 구조: 원점(origin)과 크기(size)로 구성
    • origin: CGPoint - 사각형의 좌상단 좌표
    • size: CGSize - 사각형의 너비와 높이
  • 용도: 뷰의 프레임, 바운드, 또는 클리핑 영역을 지정할 때 사용
  • 예시:
    let rect = CGRect(x: 50, y: 50, width: 200, height: 100)
    // 또는
    let rect = CGRect(origin: CGPoint(x: 50, y: 50), size: CGSize(width: 200, height: 100))
  • 유용한 속성:
    rect.minX    // 왼쪽 가장자리 x좌표
    rect.midX    // 수평 중앙 x좌표
    rect.maxX    // 오른쪽 가장자리 x좌표
    rect.minY    // 상단 가장자리 y좌표
    rect.midY    // 수직 중앙 y좌표
    rect.maxY    // 하단 가장자리 y좌표

SwiftUI에서의 활용 예시

struct ContentView: View {
    var body: some View {
        // CGFloat 사용
        Circle()
            .frame(width: 100)       // CGFloat 사용
            .opacity(0.8)            // CGFloat 사용
            .cornerRadius(10)        // CGFloat 사용
        
        // CGSize 사용
        Rectangle()
            .frame(width: 200, height: 150)  // CGSize로 변환됨
        
        // CGRect 사용 - GeometryReader 내부에서
        GeometryReader { geometry in
            Circle()
                .position(x: geometry.frame(in: .local).midX,
                          y: geometry.frame(in: .local).midY)
        }
        
        // CGPoint 사용
        Circle()
            .position(CGPoint(x: 150, y: 250))
    }
}

 

'iOS > SwiftUI' 카테고리의 다른 글

[SwiftUI] SwiftUI의 View란?  (1) 2024.01.30
[SwiftUI] SwiftUI 기본 컴포넌트 정리  (0) 2023.03.24