首页 > 解决方案 > SwiftUI:调整图像视图大小时尝试同步矩形视图和 NSImage 视图的移动

问题描述

被这个 macOS 问题困扰了几天。我有一个位于图像视图顶部的小矩形。当我手动调整图像视图的大小时,矩形与图像保持同步,这是所需的效果。如果我移动矩形然后调整图像大小,则矩形不再与图像同步移动。我已经尝试将矩形视图作为叠加层,通过计算图像大小的变化来使用偏移量(这似乎过于复杂)。下面的代码应该可以证明这个问题。您需要添加您选择的照片。谢谢!

struct ImageView: View {
    @State private var location: CGPoint = .zero

    var imageView: some View {
        Image(nsImage: NSImage(named: "Your photo/image goes here")!)
            .resizable()
            .aspectRatio(contentMode: .fit)
            .padding(.all)
            .scaledToFit()
    }
    var rectView: some View {
        Rectangle()
            .fill(Color.orange)
            .scaledToFit()
            .position(self.location)
            .frame(width: 15, height: 15)
            .gesture(DragGesture()
                .onChanged{ value in
                    self.location = value.location
                }
            )
    }

    var body: some View {
        ZStack() {
            self.imageView
            self.rectView
        }
    }
}

标签: macosswiftui

解决方案


推荐阅读