3

我正在向 iPhone 应用程序添加一些功能,并且可以使用一些帮助来选择最快/最有效/最佳实践方法来解决此问题:

在屏幕的上半部分,我有对话气泡(想想漫画书),它们是 UIImageViews 在屏幕上平移(动态 x 和 y 位置)。它是一个 UIImageView,因为有一个图像作为语音气泡的背景。

每个对话气泡都有一个匹配的图像在屏幕底部移动(在图层树的其他位置)

我想画一条尾巴(对话气泡中的那个三角形位),所以三角形的点正在跟踪下部图像,三角形的底部连接到上部 UIImageView 的底部。(从技术上讲,底座不必对接,只要我可以将背景图像的颜色与三角形匹配,它就可以重叠)。

我已经完成了所有的跟踪并使用 CGContextStrokePath 方法绘制了一条线,现在我被困在如何用三角形替换线。

我看过在 Quartz 中绘制一个三角形并填充它。我担心的是气泡每 1/10 秒重新定位一次,看起来仅绘制用于概念验证的线会对性能/视觉平滑度产生非常严重的影响。

我的一个想法是自己做三角函数,然后拉伸和旋转三角形的图像,以将每个对话气泡与较低的点连接起来。有些东西告诉我有一个更有效/更优雅的解决方案,但我无法通过文档看到它。任何有关您如何处理或将处理此问题的帮助都将不胜感激。谢谢。

4

1 回答 1

0

如果对话气泡的大小是固定的,只需使用静态 UIImage。在三角形的点设置图像视图的 layer.position 属性。然后你可以使用视图动画来移动气泡。

如果您需要不同大小的气泡,我会使用 resizableImageWithCapInsets 创建一个可调整大小的图像。然后我会做和上面一样的事情来定位它。

如果我无法使用静态图像或可调整大小的图像实现的语音气泡有什么特别之处,我可能会创建一个或多个自定义 CA 层来获得我想要的效果(比如带有形状的渐变层图层作为它的遮罩层)

于 2012-04-30T23:16:42.137 回答