import SwiftUI
struct FooView: View {
@State var localY: CGFloat = 0
@State var globalY: CGFloat = 0
@State var globalX: CGFloat = 0
@State var location = CGPoint.zero
var body: some View {
NavigationView
{
ZStack
{
ZStack(alignment:.top)
{
Color.white
.gesture(DragGesture(minimumDistance: 0, coordinateSpace: .global).onEnded { dragGesture in
self.globalY = dragGesture.location.y
self.globalX = dragGesture.location.x
})
Text(verbatim: "global y: \(self.globalY)global x: \(self.globalX)")
}
HStack(spacing: 0.0)
{
Text(verbatim: "local y: \(self.localY)")
.frame(width: 200.0, height: 200.0)
.background(Color.yellow)
.gesture(DragGesture(minimumDistance: 0, coordinateSpace: .local).onEnded { dragGesture in
self.localY = dragGesture.location.y
})
Text(verbatim: "global y: \(self.globalY)")
.frame(width: 200.0, height: 200.0)
.background(Color.purple)
.gesture(DragGesture(minimumDistance: 0, coordinateSpace: .global).onEnded { dragGesture in
self.globalY = dragGesture.location.y
})
Text(verbatim: "Location: \(Int(location.x)), \(Int(location.y))")
.frame(width: 200.0, height: 200.0)
.background(Color.pink)
.gesture(DragGesture(minimumDistance: 0,coordinateSpace: .named("layer1"))
.onChanged { info in location = info.location })
VStack(spacing: 0.0) {
SPACER_BASICS(size: 200)
GeometryReader { geometry in
VStack(alignment: .leading, spacing: 0.0) {
Text(verbatim: "\(geometry.frame(in: .global))")
Text(verbatim: "\(geometry.frame(in: .global).minX)")
Text(verbatim: "\(geometry.frame(in: .global).minY)")
Text(verbatim: "\(geometry.frame(in: .global).midX)")
Text(verbatim: "\(geometry.frame(in: .global).midY)")
Text(verbatim: "\(geometry.frame(in: .global).maxX)")
Text(verbatim: "\(geometry.frame(in: .global).maxY)")
Text(verbatim: "\(geometry.frame(in: .global).width)")
Text(verbatim: "\(geometry.frame(in: .global).height)")
VStack(alignment: .leading, spacing: 0.0)
{
Text(verbatim: "\(geometry.frame(in: .global).insetBy(dx: 10, dy: 10))")
Text(verbatim: "\(geometry.frame(in: .global).offsetBy(dx: 20, dy: 20))")
Text(verbatim: "\(geometry.frame(in: .global).size)")
Text(verbatim: "\(geometry.frame(in: .global).maximumDimensionLength)")
Text(verbatim: "\(geometry.frame(in: .global).minimumDimensionLength)")
Text(verbatim: "\(geometry.frame(in: .global).integral)")
Text(verbatim: "\(geometry.frame(in: .global).dictionaryRepresentation)")
Text(verbatim: "\(geometry.frame(in: .global).origin)")
Text(verbatim: "\(geometry.frame(in: .global).standardized)")
VStack(alignment: .leading, spacing: 0.0)
{
Text(verbatim: "\(geometry.frame(in: .global).self)")
}
}
}.modifier(caption(textColor: Color.all_theme_white))
}.background(Color.green)
GeometryReader { geometry in
VStack(alignment: .leading, spacing: 0.0)
{
Text(verbatim: "\(geometry.frame(in: .local))")
Text(verbatim: "\(geometry.frame(in: .local).minX)")
Text(verbatim: "\(geometry.frame(in: .local).minY)")
Text(verbatim: "\(geometry.frame(in: .local).midX)")
Text(verbatim: "\(geometry.frame(in: .local).midY)")
Text(verbatim: "\(geometry.frame(in: .local).maxX)")
Text(verbatim: "\(geometry.frame(in: .local).maxY)")
Text(verbatim: "\(geometry.frame(in: .local).width)")
Text(verbatim: "\(geometry.frame(in: .local).height)")
VStack(alignment: .leading, spacing: 0.0)
{
Text(verbatim: "\(geometry.frame(in: .local).insetBy(dx: 10, dy: 10))")
Text(verbatim: "\(geometry.frame(in: .local).offsetBy(dx: 20, dy: 20))")
Text(verbatim: "\(geometry.frame(in: .local).size)")
Text(verbatim: "\(geometry.frame(in: .local).maximumDimensionLength)")
Text(verbatim: "\(geometry.frame(in: .local).minimumDimensionLength)")
Text(verbatim: "\(geometry.frame(in: .local).integral)")
Text(verbatim: "\(geometry.frame(in: .local).dictionaryRepresentation)")
Text(verbatim: "\(geometry.frame(in: .local).origin)")
Text(verbatim: "\(geometry.frame(in: .local).standardized)")
VStack(alignment: .leading, spacing: 0.0)
{
Text(verbatim: "\(geometry.frame(in: .global).self)")
}
}
}.modifier(caption(textColor: Color.all_theme_white))
}.background(Color.blue)
GeometryReader { geometry in
VStack(alignment: .leading, spacing: 0.0) {
Text(verbatim: "\(geometry.frame(in: .named("layer1")))")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).minX)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).minY)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).midX)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).midY)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).maxX)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).maxY)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).width)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).height)")
VStack(alignment: .leading, spacing: 0.0)
{
Text(verbatim: "\(geometry.frame(in: .named("layer1")).insetBy(dx: 10, dy: 10))")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).offsetBy(dx: 20, dy: 20))")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).size)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).maximumDimensionLength)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).minimumDimensionLength)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).integral)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).dictionaryRepresentation)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).origin)")
Text(verbatim: "\(geometry.frame(in: .named("layer1")).standardized)")
VStack(alignment: .leading, spacing: 0.0)
{
Text(verbatim: "\(geometry.frame(in: .named("layer1")).self)")
}
}
}.modifier(caption(textColor: Color.all_theme_white))
}.background(Color.red)
}
}
}
.navigationBarHidden(true)
.coordinateSpace(name: "layer1")
.edgesIgnoringSafeArea(.all)
}
.navigationViewStyle(StackNavigationViewStyle())
}
}
struct FooView_Previews: PreviewProvider {
static var previews: some View {
FooView()
}
}
|