2012-04-17 78 views
2

我一直在研究填字遊戲應用程序一段時間。實際的遊戲在UIScrollview中運行,因爲玩家應該能夠滾動,縮放和平移。iPhone:在UIScrollview中處理400個UILabel的最佳方法

到的UIScrollView我添加了處理觸摸事件,並計算在玩家觸摸一個UITapGestureRecognizer。到現在爲止還挺好。

之後我向UIScrollview添加了約400個UILabels。在玩家按下鍵盤上的按鈕之前,它們都是「空」的。我的問題是,當我加入這些標籤全部的UIScrollView成爲當用戶猜測正確的話青瓦將變得可見滾動等

非常緩慢和laggy。這些圖塊以UIImageViews的形式加載。這再次降低了性能。

我看過DTGridView,但我沒有運氣。

你能幫我一把,並試圖引導我走向正確的方向嗎?

+1

UIKit不適用於像這樣的場景,您應該嘗試Core Graphics或基於OpenGL的引擎。 – EmilioPelaez 2012-04-17 21:39:04

回答

1

,我認爲你應該實現的UIScrollView方法的drawRect你自己,而不是新增400的UILabel它

你可以設置一個NSArray中包含400級的對象稱爲「標籤」;

當用戶按下按鈕時,您應該計算位置&測試的「標籤」&決定哪個「標籤」應顯示在當前偏移的滾動視圖中。

在一個UIScrollview中添加400個UILabels可能會導致內存問題;

+1

你可以給我一個例子或指導我的某種教程嗎? :) – 2012-04-18 05:12:49

+0

我檢查你的問題,並猜測你想創建一個20×20的難題?所以它更容易做到,實現方法** drawRect **,並繪製你需要的每個圖塊並決定每個圖塊的狀態,但是我認爲你應該首先知道如何通過** drawRect ** – adali 2012-04-18 06:59:57

+0

自定義繪製UIView這是我會使用的方法。很多子視圖總是對性能不利,使用drawRect可以直接在視圖上繪製文本和圖形。 – 2012-04-18 07:04:15

0

我一直在玩這個過去而/天甚至獲得幫助。使用各種相關的答案。但最終我用儀器和一些評論來看看什麼是緩慢的。

我記得有人說layoutSubviews減慢的事情,當你addSubviews,所以我把我的「本地」代碼離開那裏。但沒有加速。

我addSubview程序中使用斷點時,所以,我發現了iOS系統實際上是在上海華的佈局調用(navigationCtrlr)viewDidLoad中時。

我在添加子視圖和bam之前引入了0.1秒的延遲!我推薦dispatch_async來防止競爭條件下的崩潰,但那是另一個主題。

簡而言之,即使您不認爲您在那裏,它也可能在LayoutSubviews中。