상세 컨텐츠

본문 제목

Day 43. Project 9, part 1

TIL/#100DaysOfSwiftUI

by box-jeon 2020. 9. 8. 01:30

본문

Drawing 프로젝트를 시작합니다. Path와 Shape에 대해 다루네요.

 

Creating custom paths with SwiftUI

  • Path는 파라미터로 CGPoint를 받습니다.
  • AutoLayout처럼 다루고 싶다면 GeometryReader를 이용해 직접 계산해야 합니다. 
  • Path의 시작점과 마지막점을 자동으로 연결해주지 않기 때문에, 라인을 한번 더 그리거나 StrokeStyle을 사용해야 합니다.

 

Paths vs shapes in SwiftUI

  • Shape은 Path로 구현되어 있습니다.
  • 하지만 path(in:) 함수를 통해 rect를 받을 수 있기 때문에, AutoLayout처럼 처리하는 것이 용이합니다.
  • Path의 시작점과 마지막점을 자동으로 연결해주지 않는 것은 동일합니다.
  • SwiftUI의 Angle은 우리가 일반적으로 생각하는 것과 약간 다릅니다. 0도는 12시 방향에서 시작하는 것이 아니라 3시 방향에서 시작하며, 시계 방향이라는 것도 반대방향입니다. SwiftUI의 좌표 체계가 (bottom-left corner가 아닌) top-left corner를 기준으로 하기 때문이라고 합니다.

 

Adding strokeBorder() support with InsettableShape

  • Stroke를 Shape 안쪽에 그리기도록 하기 위해선 InsettableShape protocol을 conform해야 합니다.
  • inset(by:)의 파라미터로 넘어오는 amount를 저장해서 Path를 그릴 때 보정하는 방식인데... 애초에 amount를 InsettableShape이 어떻게 알고 넣어주는지 잘 이해가 안됩니다. Arc가 구현한 해당 인터페이스를 보면, amount가 한번에 정확히 호출되는 것도 아닌 것 같습니다.

 

www.hackingwithswift.com/100/swiftui/43

'TIL > #100DaysOfSwiftUI' 카테고리의 다른 글

Day 44. Project 9, part 2  (0) 2020.09.09
Day 42. Project 8, part 4  (0) 2020.09.07
Day 41. Project 8, part 3  (0) 2020.08.23
Day 40. Project 8, part 2  (0) 2020.04.01
Day 39. Project 8, part 1  (0) 2020.03.31

관련글 더보기

댓글 영역