2013-05-05 102 views
1

我加入多個UIImageViewUIView執行諸如拖拽,縮放操作和放大images.I放大圖像增加了手勢識別器的所有UIImageViews。自從我加入多張圖像(UIImageViews的)它降低了我的應用程序的性能。是否有任何人有更好的解決方案來執行此操作?謝謝拖拽,縮放和UIView的

+0

我不明白爲什麼添加多個手勢識別器應該會降低性能。根據我的經驗,事實並非如此,雖然我很可能是錯的。你可以發佈一些代碼嗎?你可以選擇擺脫手勢識別器並自己處理觸摸,但我懷疑你會獲得很大的性能提升。 – 2013-05-05 09:03:39

+0

由於我將多個圖像視圖添加到'UIView',因此性能下降。可以通過將多個UIImageView添加到視圖來實現相同的功能@ JavierQuevedo-Fernández – kaar3k 2013-05-05 11:33:03

+0

那麼,您可以將圖像渲染爲單個圖層,但我不確定這是否會讓你想去。你能否提供更多關於你想要建立的內容的信息,或者目前的方式?否則,這有點困難。 – 2013-05-05 17:24:33

回答

3

許多圖片的添加通常不會引起足夠的問題,導致您的應用程序速度變慢。例如,爲了用一個荒謬的例子來說明這一點,我添加了250(!)個圖像視圖,每個圖像視圖都有三個手勢,並且它在iPad 3上運行良好,包括將圖像動畫化爲其最終的安放位置/大小/旋轉。

兩個意見:

  1. 你有什麼計算密集型與你的形象的看法?例如:

    • 簡單地在Quartz 2D中添加陰影會產生巨大的性能影響,因爲它實際上在計算上相當昂貴。即使您使用圖層陰影,也不太可能,您可以嘗試使用shouldRasterize,這可以緩解問題,但不能解決問題。如果這是問題,還有其他(kludgy)技術可用於計算有效陰影。

    • 另一個令人驚訝的計算密集的過程,如果你的圖像(例如)與透明度設置PNG圖像,或者如果你已經降低了您的看法alpha/opacity

    • 什麼是正在加載的圖像的分辨率/大小?如果圖像非常大,則圖像視圖將根據contentMode進行渲染,但如果您要拍攝大圖像並縮小它,速度會非常慢。如果可能,您應該使用屏幕分辨率圖像。

    這些只是一些看起來如此無害的事情的例子,但其實在計算上相當昂貴。如果你在圖像視圖上進行Quartz裝飾,我會建議暫時將它們放回原處,看看是否有任何變化。

  2. 在自己診斷性能問題而言,我建議看以下兩個WWDC視頻:

希望這可以讓你去。如果你仍然難倒,你應該分享一些關於如何添加/配置視圖以及手勢如何操作的相關代碼。也許你也可以澄清性能問題的本質(例如,它是在初始演繹中,在手勢發生時是否是低幀率等)。