Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Refactoring
- swift documentation
- SWIFT
- UITextView
- 애니메이션
- collectionview
- tableView
- Observable
- uiscrollview
- Human interface guide
- 클린 코드
- combine
- swiftUI
- Clean Code
- clean architecture
- ios
- 리펙터링
- Protocol
- rxswift
- map
- 리팩토링
- RxCocoa
- 리펙토링
- Xcode
- HIG
- MVVM
- ribs
- uitableview
- UICollectionView
- 스위프트
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - SwiftUI] coordinateSpace(name:) 사용 방법 본문
coordinateSpace(name:) 란?
- “특정 뷰의 좌표 공간”에 이름을 할당하여, 다른쪽에서 points와 size같은 값을 적용시킬때 이 이름으로 접근 할 수 있게하는 하나의 namespace 역할
- 메소드 시그니쳐
- View의 Extension하여 메소드가 정의되므로, 어떤 뷰에서든 사용이 가능
- 이름을 입력하면 View를 리턴
extension View { @inlinable public func coordinateSpace<T>(name: T) -> some View where T : Hashable }
coordinateSpace(name:) 사용 방법
- 애플 예제)
- VStack안에 overlay로 circle을 두고, 이 circle을 움직임이 VStack 기준의 좌표값을 알고 싶은 경우?
- Circle에 drag 제스쳐를 등록하고나서 drag제스쳐에 coordinateSpace를 VStack으로 설정하여 구현
// https://developer.apple.com/documentation/swiftui/view/coordinatespace(name:)
struct ContentView: View {
@State var location = CGPoint.zero
var body: some View {
VStack {
Color.red.frame(width: 100, height: 100)
.overlay(circle)
Text("Location: \\(Int(location.x)), \\(Int(location.y))")
}
.coordinateSpace(name: "stack")
}
var circle: some View {
Circle()
.frame(width: 25, height: 25)
.gesture(drag)
.padding(5)
}
var drag: some Gesture {
DragGesture(coordinateSpace: .named("stack"))
.onChanged { info in location = info.location }
}
}
- GeometryProxy와 함께 사용하는 방법 예제는 이전 포스팅 글 참고
* 참고)
https://developer.apple.com/documentation/swiftui/view/coordinatespace(name:)
'iOS 기본 (SwiftUI)' 카테고리의 다른 글
Comments