ios - 哪个是在 Swift 中显示不规则形状的更好选择?

标签 ios swift uibezierpath

首先让我展示一下我在我的 ViewController 中设置了这个 UIImageView:

enter image description here

每一行都包含一个用于正文部分的 UIButton。如果我选择一个特定的按钮,它会适本地引导我。

我想做的是,当用户点击(但不松开)按钮时,我希望适当的 body 部位显示如下:

enter image description here

我可以使用 2 个选项来实现:

  1. UIBuzierPath 类来绘制,但需要大量的试验和错误以及每个 body 部位的许多重叠形状才能像上一个问题中的相似那样很好地拟合:Create clickable body diagram with Swift (iOS)
  2. 从原始图像中裁剪出突出显示的 body 部位,并将其放置在 UIImageView 上,具体取决于选择的 UIButton。然而,每个 body 部位只有一张图片,但仍然比选项 1 更简单。

现在,我的问题不是如何去做,而是在 cpu 处理和内存分配方面哪个是实现此目标的更好选择?

换句话说,我只担心我的应用程序滞后以及占用应用程序大小的存储空间。我不关心这需要多少时间,我只想确保我的应用在尝试绘制所有形状时不会卡顿。

谢谢。

最佳答案

这些方法中的任何一种都不太可能对 CPU 或内存产生任何重大影响。特别是如果在选项 2 中,您只需使用剪切图像的 alpha channel 并使它们成为半透明的有色叠加层。在 CPU/GPU 方面,这两种方法都不会使您低于 60fps 的最大屏幕刷新率(这是用户会注意到性能问题的方式)。在内存方面,将十几个贝塞尔曲线路径或单 channel 图像加载到 RAM 中与您现有的相比应该是九牛一毛,特别是在过去 5 年内发布的任何 iOS 设备上,除非是 Apple Watch。

请记住“过早优化是万恶之源”。除非您已经看到性能问题或有充分的理由相信它们会存在,否则您的时间最好花在其他问题上,例如使代码更具可读性、简洁性、可重用性等。请参阅维基百科中关于“何时优化”的简短部分: https://en.wikipedia.org/wiki/Program_optimization#When_to_optimize

关于ios - 哪个是在 Swift 中显示不规则形状的更好选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37036825/

相关文章:

ios - 尝试查看记录时,从结果类型为 'UITableViewCell *__strong' 的函数返回 'UITableView *' 的不兼容指针类型

ios - 如何快速检查表格 View 单元格是行还是部分?

swift - 使用 XCode 进行测试时,MacOS 应用程序本地通知不显示

ios - 无法使用类型为 'UnsafeMutablePointer<Float>' 的参数列表调用类型为 '(UnsafeMutableRawPointer!)' 的初始值设定项

ios - 从 UIBezierPath 获取点

ios - UIBezierPath : Make image of drawing only

ios - Swift Firebase -如何从 GeoFire 获取单个用户的位置

ios - 如何在 x 个移动注释之间画线?

ios - 将 UIBezierPath 转换为 UIImage

ios - 显示 UIWebView 时如何防止初始白色闪光?