swift - 如何用MVC模式构建可移动对象?

标签 swift model-view-controller drag-and-drop

我正在开发一款 iOS 应用程序,作为其功能之一,允许用户在屏幕上拖放图像(注意 — 不是 iOS 11 应用程序之间的拖动)。每个图像都是一个自定义模型 Photo,然后 Page 模型对象具有一个 Photo 数组。

我正在考虑拥有一个包含所有 Photo 对象的 PageEditor View ,但我不确定如何最好地跟踪 x/y 每个对象的定位。因为 Photo 对象是一个结构体,而不是 View ,所以我需要让每个 Photo 对象也有一个可拖动的自定义 PhotoView

本质上,PageEditor 有一个 Page,其中包含 Photo。但是 PageEditor 也有一个 PhotoView 数组,所以哪个模型/ View 应该知道它的位置?

我明白这是一个相当抽象的问题。

最佳答案

您的照片对象可以包含两个 x,y 坐标点。可以根据照片的位置进行更新。

func touchesMoved(_ touches: Set<UITouch>,  with event: UIEvent)

在里面你可以访问你触摸的位置

for touch in touches {
  touch.position(in:self)
  // update Photo x,y 
}

在 MVC 中,您的照片是一个模型。你的 PhotoView 是一个 View 。

关于swift - 如何用MVC模式构建可移动对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621598/

相关文章:

javascript - 是否可以通过jquery禁用或隐藏文件下载对话框中的文件 "save"选项?

c# - 使用 DTOS 从 Repository 获取数据到服务层

linux - 让用户将文件从 Qt 的 ListView 中拖放到他们想要的位置

swift - requestWhenInUseAuthorization() 在 iOS 8 中无法使用 Info.plist 中的 NSLocationWhenInUseUsageDescription 键

swift - Firestore 查询 Swift 4.0 缺少返回

swift - 带有 switch swift 的通用枚举

ios - 如何在 SwiftUI 中更新文本标签?

c# - 如何为不同的数据源实现 Data Mapper/Repository 持久化模式?

cocoa - 将屏幕坐标中的 NSPoint 转换为窗口坐标

c++ - Qt 拖放 - 拖动时更改图像显示