本文探讨使用 SwiftUI 开发所见即所得 (WYSIWYG) 矢量绘图应用程序。所见即所得的矢量绘图应用程序可以被认为是在画布上呈现不同对象(例如矩形、椭圆形、文本或其他形状)的应用程序;通过拖动在画布周围移动对象;并通过点击对象来更改对象属性。这在下面的 iOS 应用程序的屏幕截图中进行了说明。具体来说,本文探讨了将SwiftUI 视图用作“绘图画布”,而不是使用 Core Graphics 画布或 SwiftUI 画布。
为什么要使用 SwiftUI View 作为绘图画布?
在 Apple 生态系统中开发矢量绘图应用程序时,首先想到的是 Core Graphics 或 SwiftUI Canvas。两者都非常快速,易于使用,并为我们提供了画布。自然,作为绘图应用程序的画布,两者都是不错的选择。但是,当绘图应用程序需要所见即所得行为时,Swift 开发人员意识到处理对象交互(如拖动、移动和调整大小)需要使用 Apple 的手势和事件。
这使得 Swift 开发人员很难忽略将 SwiftUI 视图用作“绘图画布”。这是因为 SwiftUI 视图直接支持所有 Apple 的手势和事件。退一步想一想,SwiftUI View 是 Apple 为用户界面 (UI) 开发而设计的,这样的 View 已经很自然地支持了 WYSIWYG 应用程序所需的所有行为:渲染视图和对象,以及支持手势和事件。将 SwiftUI 视图用作“绘图画布”也不会阻止我们使用 Core Graphics、SwiftUI 画布甚至 Metal 来渲染需要特殊处理的底层对象,