当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Never coordinateSpace(name:)用法及代码示例


实例方法

coordinateSpace(name:)

为视图的坐标空间分配一个名称,以便其他代码可以对相对于命名空间的点和大小等维度进行操作。

声明

func coordinateSpace<T>(name: T) -> some View where T : Hashable

参数

name

用于标识此坐标空间的名称。

详述

使用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 }
    }
}

在这里,名为“stack” 的ContentView 中的VStack 由一个红框组成,其中心有一个自定义的Circle 视图View/overlay(_:alignment:)

circle 视图有一个附加的DragGesture,它以封闭的 VStack 的坐标空间为目标。由于手势识别器的关闭在 circle 中注册事件,它将它们存储在共享的 location 状态变量中,并且 VStackText 视图中显示坐标。

可用版本

iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Never coordinateSpace(name:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。