일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 운영체제
- 앨런
- struct
- 비동기
- COLOR
- Codable
- async
- 상호배제
- 100 days of SwiftUI
- Swift
- 알고리즘
- Linked List
- deadlock
- decode
- SwiftUI
- core data
- forEach
- 동시성
- 인프런
- scrollview
- 가상 메모리
- 프로세스 스케줄링
- UserDefaults
- Algorithm
- 동기화
- 데드락
- @state
- 오브젝트
- IOS
- Apple Developer Academy
Archives
- Today
- Total
기어가더라도 제대로
[SwiftUI-기초] path 본문
그림을 그리는데 기초가 되는 선을 만들어 봅시다.
- Path 는 Color, gradients, shapes 와 마찬가지로 View
- SwiftUI 에서 Path 는 클로저로 선언
- Path 자체에도 shape(squares, circles, arcs, lines) 같은 것을 만드는 메서드가 있음
- 기본 원리는 "기준점"에서 path 를 추가하는 원리
Path { path in
path.move(to: CGPoint(x: 200, y: 100))
path.addLine(to: CGPoint(x: 100, y: 300))
path.addLine(to: CGPoint(x: 300, y: 300))
path.addLine(to: CGPoint(x: 200, y: 100))
}
- path.move: 기준점을 선언
- path.addLine() : 처음 선은 기준점을 기준으로 CGPoint 좌표로 감
- 위의 코드는 총 3개의 선이 추가됨
- 기본적으로 색이 실된 채로 나옴
관련 함수 - .fill, .stroke
fill - 내부 색칠 | stroke - 테두리 색칠 |
Path { path in
}
.fill(.blue)
Path { path in
}
.stroke(.red, lineWidth: 10)
Stroke 문제 해결법 - 1
- stroke 를 보면 아래 코너는 마감이 잘되었는데 탑코너는 마감이 안된것이 보임
- 앞 선과 뒤의 선을 연결하는 로직이기 때문
- 맨 마지막 탑 코너는 더 이상 진행할 선이 없기 때문에 뚝 끊겨 보임
- path.closeSubpath(): 로 해결 가능
Path { path in
path.move(to: CGPoint(x: 200, y: 100))
path.addLine(to: CGPoint(x: 100, y: 300))
path.addLine(to: CGPoint(x: 300, y: 300))
path.addLine(to: CGPoint(x: 200, y: 100))
path.closeSubpath()
}
.stroke(.red, lineWidth: 10)
stroke 문제 해결법 - 2
- strokeStyle 을 이용
- lineCap: 선의 끝을 어떤식으로 마무리 할지 결정
- lineJoin: 다음 직선과 어떤식으로 연결할지 결정
.stroke(.blue, style: StrokeStyle(lineWidth: 10, lineCap: .round, lineJoin: .round))
결론
- 선을 그리려면 Path 를 이용
- Path 안에 다양한 함수가 있음
- 고정 좌표계의 한계가 존재 -> Shape 로 보완
'SwiftUI - 기초' 카테고리의 다른 글
[SwiftUI-기초] strokeBorder() - 도형을 프레임에 딱맞게 (0) | 2022.11.16 |
---|---|
[SwiftUI-기초] Shape, 도형 (0) | 2022.11.15 |
[SwiftUI-기초] Scrolling Grid (0) | 2022.11.11 |
[SwiftUI-기초] 계층적인 Codable 데이터 다루기 (0) | 2022.11.10 |
[SwiftUI-기초] NavigationLink (0) | 2022.11.09 |
Comments