在屏幕上绘制移动语音气泡的最快/最有效的方法 - 核心动画,Quartz 2D?

时间:2010-01-27 05:21:15

标签: iphone core-animation quartz-2d

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

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

每个语音气泡都有一个围绕屏幕底部移动的匹配图像(图层树中的其他位置)

我想绘制一个尾部(来自语音气泡的三角形位),因此三角形的点跟踪下部图像,三角形的底部连接到上部UIImageView的底部。 (从技术上讲,基础不必对接,只要我可以将背景图像的颜色与三角形匹配,它就会重叠。)

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

我已经看过在Quartz中绘制一个三角形并填充它。我担心的是每隔1/10秒重新定位气泡,看起来只是用于概念验证的线条具有相当严重的性能/视觉平滑度影响。

我有一个想法就是自己做三角学,然后拉伸& amp;旋转三角形的图像以将这些气泡中的每一个与较低点连接起来。有些东西告诉我有更高效/更优雅的解决方案,但我无法通过文档看到它。任何有关您如何处理或将如何处理此问题的帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

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

如果你需要不同大小的语音气泡,我会使用resizableImageWithCapInsets创建一个可调整大小的图像。然后我会按照上面的方式进行定位。

如果对于使用静态图像或可调整大小的图像无法实现的语音泡泡有一些特殊内容,我可能会创建一个自定义CA图层或图层来获得我想要的效果(就像渐变图层一样)形状图层作为遮罩层)