UIBeizerPath
A path that consists of straight and curved line segments that you can render in your custom views.
공식문서에 따르면, 사용자의 커스텀 뷰에서 렌더링할 수 있는 직선 곡선 세그먼트로 구성된 경로라고 합니다.
해당 객체는 UIKit의 Drawing에 속해있는 클래스입니다.
한마디로 사용자가 원하는 모양을 그려낼 수 있도록 도와주는 객체라고 생각하시면 됩니다.
init
UIBeizerPath를 생성하는데 기본으로 주어지는 모양들이 존재합니다.
// 기본 생성
public init()
// 직사각형 모양 CGRect를 인자로 받는다. CGRect(x: ,y: , width: , height: ,) x y 는 그리기의 시작지점, width height는 크기
public convenience init(rect: CGRect)
// 타원형 모양 CGRect를 인자로 받는다. CGRect(x: ,y: , width: , height: ,) x y 는 그리기의 시작지점, width height는 크기
public convenience init(ovalIn rect: CGRect)
// 둥근 사각형 모양 만든다. CGRect(x: ,y: , width: , height: ,) x y 는 그리기의 시작지점, width height는 크기 , cornerRadius 는 꼭지점의 둥근정도를 CGFloat 값으로 전달
public convenience init(roundedRect rect: CGRect, cornerRadius: CGFloat)
// 부분적으로 둥근 사각형 모양을 만든다. CGRect(x: ,y: , width: , height: ,) x y 는 그리기의 시작지점, width height는 크기
// UIRectCorner은 어느 꼭지점을 둥글게 만들지 결정
// cornerRadii 는 둥근 정도를 CGSize 값으로 받는다.
public convenience init(roundedRect rect: CGRect, byRoundingCorners corners: UIRectCorner, cornerRadii: CGSize)
// 원 모양으로 그린다.
// center: CGPoint(x:, y:) 원의 중간위치
// radius: 반지름
// startAngle: 그리기 시작 각도
// endAngle: 그리기 종료 각도
// clockwise: 시계방향으로 그릴지 Bool값으로 전달
public convenience init(arcCenter center: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool)
// Core Graphics를 인자로 받아 경로 생성한다.
public convenience init(cgPath CGPath: CGPath)
이렇게 원, 직사각형, 타원형, 둥근 사각형 기타 등등 많은 표준된 모양을 지원해주지만, 사용자가 직접 그릴 수도 있습니다.
직접 그리기
위와 같은 모양을 그리기 위해서 또는 선을 긋기 위해선 시작지점이 필요합니다.
// 생성
let path = UIBezierPath()
// 시작지점 지정
// CGPoint(x: ,y: )
path.move(to: CGPoint)
// 직선 생성
// CGPint(x: ,y: ) 시작지점에서 x,y 지점과 잇는 선 생성
path.addLine(to: CGPoint)
// 3차원 곡선 생성
path.addCurve(to: CGPoint, controlPoint1: CGPoint, controlPoint2: CGPoint)
// 가장 최근에 그어진 선의 끝 지점과 시작지점과 잇기
path.close()
// 현재까지 추가된 선을 모두 그리기
path.stroke()
// 현재까지 그려진 선이 둘러싼 영역을 채우기
path.fill()
'iOS' 카테고리의 다른 글
메모리 사용량 확인을 위한 vmmap (1) | 2025.03.18 |
---|---|
UICollectionViewLayout과 UICollectionViewFlowLayout (0) | 2025.03.03 |
NotificationCenter (0) | 2025.02.20 |
iOS Combine (0) | 2025.02.19 |
URLSession 번역 (0) | 2024.12.13 |