IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> swiftUI 通过DragGesture和coordinateSpace获取视图的坐标 -> 正文阅读

[移动开发]swiftUI 通过DragGesture和coordinateSpace获取视图的坐标

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()
    }
}

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-05 20:23:48  更:2021-07-05 20:25:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 4:05:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码