UIBezierPath

Groot·2022년 10월 10일
1

TIL

목록 보기
60/148
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 UIBezierPath - 공식문서

  • 사용자 정의 보기에서 렌더링할 수 있는 직선 및 곡선 선분으로 구성된 path입니다.

📍 Declaration

class UIBezierPath : NSObject

📍 Overview

🔗 시작

  • 처음에 이 클래스를 사용하여 path에 대한 geometry만 지정합니다, path는 직사각형, 타원 및 호와 같은 단순한 모양을 정의하거나 직선 및 곡선 segments가 혼합된 복잡한 다각형을 정의할 수 있습니다.
  • 모양을 정의한 후 이 클래스의 추가 메서드를 사용하여 현재 드로잉 컨텍스트에서 path를 렌더링할 수 있습니다.
  • UIBezierPath 개체는 렌더링하는 동안 path를 설명하는 속성과 path의 geometry를 결합합니다.
  • geometry와 속성을 별도로 설정하고 서로 독립적으로 변경할 수 있습니다.
  • 원하는 방식으로 개체를 구성한 후 현재 컨텍스트에서 자체적으로 그리도록 지시할 수 있습니다.
  • 생성, 구성 및 렌더링 프로세스는 모두 별개의 단계이므로 Bézier path 개체를 코드에서 쉽게 재사용할 수 있습니다.
  • 동일한 개체를 사용하여 동일한 모양을 여러 번 렌더링할 수도 있습니다, 연속적인 드로잉 호출 간에 렌더링 옵션을 변경할 수도 있습니다.
  • path의 현재 점을 조작하여 path의 geometry를 설정합니다.
  • 새 빈 path 개체를 만들 때 현재 지점은 정의되지 않으며 명시적으로 설정해야 합니다.
  • segments를 그리지 않고 현재 점을 이동하려면 move(to:) 메서드를 사용합니다.
  • 다른 모든 방법을 사용하면 path에 선 또는 곡선 segments가 추가됩니다.
  • 새 segments를 추가하는 방법은 항상 현재 지점에서 시작하여 지정한 새 지점에서 끝나는 것으로 가정합니다.
  • segments를 추가하면 새 segments의 끝점이 자동으로 현재 점이 됩니다.

🔗 종료

  • 단일 Bezier path 개체에는 여러 개의 열린 또는 닫힌 하위 path가 포함될 수 있으며, 여기서 각 하위 path는 연결된 일련의 path segments를 나타냅니다.
  • close() 메서드를 호출하면 현재 지점에서 하위 path의 첫 번째 지점까지 직선 segments를 추가하여 하위 path를 닫습니다.
  • move(to:) 메서드를 호출하면 현재 하위 path가 종료되고(닫지 않고) 다음 하위 path의 시작점이 설정됩니다.
  • Bezier path 개체의 하위 path는 동일한 도면 속성을 공유하며 그룹으로 조작해야 합니다.
  • 속성이 다른 하위 path를 그리려면 각 하위 path를 고유한 UIBezierPath 개체에 넣어야 합니다.

🔗 그리기

  • Bezier path의 형상 및 속성을 구성한 후 stroke() 및 fill() 메서드를 사용하여 현재 그래픽 컨텍스트에서 path를 그립니다.
  • stroke() 메서드는 현재 획 색상과 Bezier path 객체의 속성을 사용하여 path의 윤곽을 추적합니다.
  • 마찬가지로, fill() 메서드는 현재 채우기 색상을 사용하여 path로 둘러싸인 영역을 채웁니다. (UIColor 클래스를 사용하여 획 및 채우기 색상을 설정합니다.)
  • Bezier path 개체를 사용하여 모양을 그리는 것 외에도 새 클리핑 영역을 정의하는 데 사용할 수도 있습니다.
  • addClip() 메서드는 path 객체가 나타내는 모양을 그래픽 컨텍스트의 현재 클리핑 영역과 교차시킵니다.
  • 후속 그리기 동안 새 교차 영역 내에 있는 콘텐츠만 실제로 그래픽 컨텍스트에 렌더링됩니다.

📍 Topics

🔗 Creating a Bézier path

init(rect: CGRect)
  • 직사각형 path가 있는 새 Bezier path 개체를 만들고 반환합니다.
init(ovalIn: CGRect)
  • 지정된 사각형에 내접된 타원형 path가 있는 새 Bezier path 개체를 만들고 반환합니다.
init(roundedRect: CGRect, cornerRadius: CGFloat)
  • 둥근 사각형 path가 있는 새 Bezier path 개체를 만들고 반환합니다.
init(roundedRect: CGRect, byRoundingCorners: UIRectCorner, cornerRadii: CGSize)
  • 지정된 모서리에서 둥근 사각형 path가 있는 새 Bezier path 개체를 만들고 반환합니다.
init(arcCenter: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool)
  • 원호가 있는 새 Bezier path 개체를 만들고 반환합니다.
init(cgPath: CGPath)
  • 핵심 그래픽 path의 내용으로 새 Bezier path 개체를 만들고 반환합니다.
func reversing() -> UIBezierPath
  • 현재 path의 반전된 내용으로 새 Bezier path 개체를 만들고 반환합니다.
init()
  • 빈 path 개체를 만들고 반환합니다.
init?(coder: NSCoder)
  • unarchiver(Unarchiver는 다양한 종류의 아카이브 파일을 언아카이브할 수 있는 작고 사용하기 쉬운 프로그램)의 데이터에서 Bezier path 개체를 만듭니다.

🔗 Constructing a path

func move(to: CGPoint)
  • path의 현재 지점을 지정된 위치로 이동합니다.
func addLine(to: CGPoint)
  • path에 직선을 추가합니다.
func addArc(withCenter: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool)
  • path에 호를 추가합니다.
func addCurve(to: CGPoint, controlPoint1: CGPoint, controlPoint2: CGPoint)
  • path에 3차 Bezier 곡선을 추가합니다.
func addQuadCurve(to: CGPoint, controlPoint: CGPoint)
  • path에 2차 Bezier 곡선을 추가합니다.
func close()
  • 가장 최근의 하위 path를 닫습니다.
func removeAllPoints()
  • path에서 모든 점을 제거하여 모든 하위 path를 효과적으로 삭제합니다.
func append(UIBezierPath)
  • 지정된 path 개체의 내용을 path에 추가합니다.
var cgPath: CGPath
  • path의 Core Graphics 표현입니다.
var currentPoint: CGPoint
  • 그래픽 path의 현재 지점입니다.

🔗 Accessing drawing properties

var lineWidth: CGFloat
  • path의 선 너비입니다.
var lineCapStyle: CGLineCap
  • stroked path의 끝점 모양입니다.
var lineJoinStyle: CGLineJoin
  • stroked path의 연결된 segments 사이의 마디 모양입니다.
var miterLimit: CGFloat
  • 연결된 선 segments 간의 교차점에서 스파이크를 방지하는 데 도움이 되는 제한 값입니다.
var flatness: CGFloat
  • 곡선에서 변하는 부분 표현의 정확도를 결정하는 요소입니다.
var usesEvenOddFillRule: Bool
  • path를 그리는 데 짝수-홀수 굴곡 규칙이 사용 중인지 여부를 나타내는 부울 값입니다.
func setLineDash(UnsafePointer<CGFloat>?, count: Int, phase: CGFloat)
  • path의 선을 긋는 패턴을 설정합니다.
func getLineDash(UnsafeMutablePointer<CGFloat>?, count: UnsafeMutablePointer<Int>?, phase: UnsafeMutablePointer<CGFloat>?)
  • path의 선을 긋는 패턴을 검색합니다.

🔗 Drawing paths

func fill()
  • 현재 그리기 속성을 사용하여 path가 둘러싸는 영역을 그립니다.
func fill(with: CGBlendMode, alpha: CGFloat)
  • 지정된 혼합 모드와 투명도 값을 사용하여 path가 둘러싸는 영역을 칠합니다.
func stroke()
  • 현재 도면 속성을 사용하여 path를 따라 선을 그립니다.
func stroke(with: CGBlendMode, alpha: CGFloat)
  • 지정된 혼합 모드와 투명도 값을 사용하여 path를 따라 선을 그립니다.

🔗 Specifying clipping paths

func addClip()
  • 현재 그래픽 컨텍스트의 클리핑 path를 사용하여 path가 둘러싸는 영역과 교차하고 결과 모양을 현재 클리핑 path로 만듭니다.

🔗 Performing hit-testing

func contains(CGPoint) -> Bool
  • 지정된 지점이 path를 둘러싸는 영역 내에 있는지 여부를 나타내는 부울 값을 반환합니다.
var isEmpty: Bool
  • path에 유효한 요소가 있는지 여부를 나타내는 부울 값입니다.
var bounds: CGRect
  • path의 경계 사각형입니다.

🔗 Applying transformations

func apply(CGAffineTransform)
  • 지정된 CGAffineTransform을 사용하여 path의 모든 점을 변환합니다.

🔗 Constants

struct UIRectCorner
  • 직사각형의 모서리입니다.
profile
I Am Groot

0개의 댓글