本文探讨使用 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 来渲染需要特殊处理的底层对象,

SwiftUI 绘图类精品项目大全之使用 SwiftUI 开发所见即所得的绘图应用程序 (教程含源码)相关推荐

  1. SwiftUI 界面大全之文本折叠书签动画组件3D(中文教程含源码)

    实战需求 SwiftUI 界面大全之文本折叠书签动画组件3D(中文教程含源码) 本文价值与收获 看完本文后,您将能够作出下面的界面 基础知识 效果本身其实很简单,包括三件事: 图像的旋转 图像的垂直移 ...

  2. SwiftUI 精品项目之完整MOOC幕课iOS项目 含服务端 轮播欢迎页面(教程含源码)

    实战需求 SwiftUI 精品项目之完整MOOC幕课iOS项目 (教程含源码) 本文价值与收获 看完本文后,您将能够作出下面的界面 看完本文您将掌握的技能 自动轮播 个性化注册界面 个人信息界面 带f ...

  3. SwiftUI iOS 精品项目之每天收集的故事卡片(教程含源码)

    实战需求 SwiftUI iOS 精品项目之每天收集的故事卡片(教程含源码) 每天收集的故事的卡片 本文价值与收获 看完本文后,您将能够作出下面的界面 核心功能 1.每天总共3个问题!选择一个您喜欢的 ...

  4. SwiftUI 绘图shape大全之 Teardrop水滴形状 (中文教程含源码)

    实战需求 SwiftUI 绘图shape大全之 Teardrop水滴形状 (中文教程含源码) 本文价值与收获 看完本文后,您将能够作出下面的界面 基础知识 ​ 什么是Paths Paths主要用于绘制 ...

  5. SwiftUI 音乐和网络大全之网络音乐播放App支持iTunes搜索与播放(教程含源码)

    实战需求 SwiftUI 音乐和网络大全之网络音乐播放App支持iTunes搜索与播放(教程含源码) 本文价值与收获 看完本文后,您将能够作出下面的界面 实战代码 import SwiftUIstru ...

  6. SwiftUI 动画大全之 五彩纸屑特效含三角形、五星、钻石与自定义图像 (教程含源码)

    实战需求 SwiftUI 动画大全之 五彩纸屑特效含三角形.五星.钻石与自定义图像 (教程含源码) 下雨了,五彩纸屑!SAConfettiView是向您的应用程序添加有趣.多彩的五彩纸屑并让用户感到有 ...

  7. SwiftUI 动画图形之绘制正弦波实现个性化波浪纹效果 (教程含源码)

    实战需求 SwiftUI 动画图形之绘制正弦波实现个性化波浪纹效果 (教程含源码) 本文价值与收获 看完本文后,您将能够作出下面的界面 一个可动画显示的SwiftUI形状,用于沿着底部绘制带有弯曲正弦 ...

  8. SwiftUI 精品项目之照片编辑器图像裁剪工具(教程含源码)

    实战需求 照片编辑器图像裁剪工具,具有下列功能 照片选择器 选择图片切割方式 Circle Square Rectangle 自定义大小350x450 切割界面 支持自定义区域 本文价值与收获 看完本 ...

  9. SwiftUI 教育类项目之离线学术跟踪并生成 CGPA 和 GPA管理App(教程含源码)

    目录 一.实战需求 二.本文价值与收获 看完本文后,您将能够作出下面的界面 三.看完本文您将掌握的技能 1.自定义header 2.自定义分段选择器 SegmentedPicker 3.自定义环形进度 ...

最新文章

  1. 缺省参数-指定函数缺省参数的默认值
  2. ionic助手 v1.9.0 一键式开发环境工具(告别命令行,超强功能)
  3. c语言怎么让图形界面单独显示,「分享」C语言如何编写图形界面
  4. 声纹识别中的召回和精度概念
  5. 缺少ncurses包的解决办法
  6. 【Linux】复制文件到当前目录 / 复制文件并重命名到当前目录
  7. “导航技术”学习笔记
  8. VS2017适配版的 VA 安装教程
  9. 超级好看的windows终端美化教程
  10. 挂茶馆热血传奇私服辅助开发教程
  11. 小米路由器 一直常亮黄灯 修复方法
  12. 哲理故事三百篇[转]
  13. metricbeat监控logstash运行状态上报Elasticsearch后Kibana可视化查看
  14. WSL1安装rust报错thread ‘main‘ panicked的解决方法
  15. linux运行ping,linux ping命令的几个简单使用方法
  16. 9.Vue中mounted的简单理解
  17. linux定时每隔多少天,Linux中Cron任务间隔执行:每隔几分钟/几小时/几天
  18. 研究生计算机论文怎么写,研究生计算机论文摘要怎么写 研究生计算机论文摘要范文参考...
  19. 计算机软件维护知识,计算机软件系统维护方法
  20. 拆分pdf用什么软件?什么软件可以拆分pdf?pdf拆分成多个文件的软件?

热门文章

  1. Django初识(8.常用视图之DetailView,UpdateView,DeleteView)完结
  2. Aop+自定义注解实现数据字典翻译
  3. 播放器实战04 av_format打开MP4文件
  4. SpringBoot2集成redis,使用lettuce客户端
  5. 生产车间调度的六大特点
  6. 软件测试工程师面试秘籍
  7. 创业启示录:创业失败报告(中)
  8. Mysql性能监控工具Monyog完整安装
  9. python 爬虫(表情包)
  10. k8s版本与docker版本依赖关系