2010-01-27 29 views
3

我增加了一些功能的iPhone應用程序,並可能在挑選最快/最有效的/最佳實踐方法解決這個問題的一些幫助:在屏幕上繪製移動泡泡的最快/最有效的方式 - CoreAnimation,Quartz2D?

在我的屏幕的上半部分,我有語音泡沫(認爲​​漫畫書)UIImageViews翻譯屏幕(動態x & y位置)。這是一個UIImageView,因爲有一個圖像作爲對話框的背景。

每個講話氣泡具有匹配的圖像在屏幕的底部(在層樹別處)移動

我想提請尾部(從語音氣泡該三角位),所以的點三角形正在跟蹤較低的圖像,三角形的底部被連接到上部UIImageView的底部。 (從技術上來說,底座不一定要碰撞,只要我可以將背景圖像的顏色與三角形相匹配,就可以重疊)。

我已經完成了所有跟蹤&用CGContextStrokePath方法繪製了一條線,現在我被困在如何用三角形替換線。

我曾看過在Quartz中繪製三角形並填充它。我擔心的是氣泡會每十分之一秒重新定位一次,而且看起來只是繪製了用於概念驗證的線條,對性能/視覺平滑度的影響非常嚴重。

我的一個想法是自己做三角函數,然後彈出一個三角形的圖像,將這些氣泡與下面的點連接起來。有些東西告訴我有更高效/更優雅的解決方案,但我無法通過文檔查看它。任何幫助你如何或將會解決這個問題,我們感激不盡。謝謝。

+0

你可能還想看看 - [CALayer setContents:(id)someCGImageRef]作爲一個更快(但有點哈克)的東西,而不是UIImageView ... – 2010-01-27 05:23:29

回答

0

如果語音氣泡的大小是固定的,只需使用靜態UIImage即可。在三角形的位置設置圖像視圖的layer.position屬性。然後,您可以使用視圖動畫來移動泡泡。

如果您需要使用不同大小的對話框,我會使用resizableImageWithCapInsets創建可調整大小的圖像。然後,我會像上面一樣來定位它。

如果講話泡泡有些特殊的問題,我無法用靜態圖像或可調整大小的圖像來實現,我可能會創建一個自定義CA圖層或圖層來獲得我想要的效果(如漸變因爲它是遮罩層)

相關問題