[iOS] - UIGraphicsImageRenderer

sun02·2021년 12월 29일
0

100 days of Swift 

목록 보기
39/40


자세히 - Apple document

UIGraphicsImageRenderer란?

Core Graphics 지원 이미지를 만들기 위한 그래픽 렌더러입니다.

애플문서에는 다음과 같이 설명되어 있는데
UIGraphicsImageRenderer 이니까 UIKit과 관련 있는 클래스 인것 같은데 Core Graphics와 무슨 관련이 있나.. 싶었습니다.

찾아보니 이 클래스가 UIKit 클래스이지만 UIKit 기반 앱을 위해 Core Graphics에 대한 게이트웨이 역할을 합니다.

그러니까 렌더러 개체를 만든 후, 그 개체에 렌더링 context를 작성하는데 그 context가 Core Graphics의 context와 함께 작동하도록 설계된 Core Graphics 함수 또는 UIKit 메서드라는 것입니다.

헷갈리니 코드로 이해를 해보겠습니다..

drawRectangle()

직사각형을 그리는 drawRectangle() 메서드 입니다.

  1. 크기가 512x512인 UIGraphicsImageRenderer 개체 renderer를 만듭니다.
    • renderer를 만들었다고 렌더링이 실행되지는 않습니다. renderer의 image()메서드에서 실행됩니다.
  2. renderer.image 메서드의 클로져를 작성해 줍니다.
    • 이 메서드는 클로져를 유일한 매개변수로 받고, 이 클로져에 그리기와 관련된 모든 코드를 작성합니다.
    • 클로져는 UIGraphicsImageRendererContext를 참조하는 단일 매개변수 ctx(제가 작성한 이름)를 받습니다.
    • ctx는 대부분의 그리기와 관련된 코드를 갖고 있는 데이터 타입 CGContext를 가지고 있습니다.
  3. 렌더링이 끝나면 ImageView의 image에 위치시켜줍니다.

UIGraphicsImageRendererContext에도 기본적인 그리기를 위한 메서드는 존재하지만, 더 좋은 유용한 것들은 Core Graphics의 기능을 제공하는 CGContext에 있습니다.

+ 직사각형 그리는 데 사용한 메서드

  • setFillColor() : 그린 직사각형 내부를 채우는 색상
  • setStrokeColor() : 그린 직사각형의 가장자리 색상
  • setLineWidth() : 직사각형 가장자리 선의 두께
    • 두께가 10이라면 직사각형 가장자리 밖으로 5만큼, 내부로 5만큼의 두께를 가집니다.
  • addRect() : 현재 위치에 직사각형 추가
  • drawPath() : 선택한 상태(여기서는 .fillStroke)를 사용하여 경로 그리기

즉, UIGraphicsImageRendererContext가 Core Graphic 렌더링 기능을 직접적으로 사용할 수 있는 cgContext를 가지기 때문에
애플문서에서 UIGraphicsImageRenderer를 위와 같이 설명했나 봅니다...

그 외에도 원, 체커보드, 돌아가는 직사각형,, 등을 그리고 싶다면
HackingWithSwift < 여기를 참조하면 좋을 것 같습니다

0개의 댓글