2010-12-08 83 views
0

我將實現一個類似於iOS中的原始照片應用程序的視圖。在UITableViewCell(iPhone)中關於UIButton的Tricky性能問題

我創建了一個定製的UITableViewCell,裏面有4個UIButton。當單元格的圖像數組更改時,它會更新按鈕的圖像。

我努力工作以獲得令人滿意的表現。但是,我發現了一個棘手的滯後問題。

當我正常使用我的應用程序時,滾動非常平滑,沒有顯着的延遲。但是,如果我讓應用程序(模擬器)在「縮略圖網格視圖」上運行,並切換到Mac OS中的其他應用程序。過了一段時間(大約1分鐘),當我切換回模擬器時,滾動視圖卡住了。很難滾動它。如果我點擊切換到另一個視圖的東西,然後切換回來,一切都會再次平滑。非常棘手。

我也試過TTRemoteExamples,它使用three20來實現網格視圖。在Mac OS中的不同應用程序之間切換(不在iOS中)後,它也會卡住。

然後我試圖不用UIButton填充自定義的單元格,而是4個圖像。它沒有被卡住。所以也許原因在於UITableViewCell和UIButton之間的衝突?

我不知道它是否只發生在模擬器上,或者在發送到設備時有潛在的性能問題(我沒有設備測試)。

蘋果的照片應用程序永遠不會是這樣的。

所以我要從UIScrollView自己實現它,看看問題是由UITableView的機制引起的。如果有人來解決它,我仍然想知道滯後的原因。

對不起,我可憐的英語,我希望你能抓住我的意思。

回答

0

參考Subclassing UITableViewCell節, 我終於通過實現我的自定義模仿從引導的方式解決了這個問題,無需添加子視圖UITableViewCell

顯然,添加太多子視圖,只有4我的代碼,雖然,造成了我上面提到的奇怪的問題。因此,絕不要將SUBVIEWS,尤其是那些帶有UIImageView的內容添加到contentView UITableViewCellUITableViewCell本身。

相反,守在定製UITableViewCell數據的,並做每幅圖相關的事情drawRect,使用-[UIImage drawAtPoint:]-[NSString drawAtPoint:withFont:]

事實上,蘋果的指南已經提到它。我忽略了這個部分。

但是,我仍然好奇爲什麼,正如我所提到的,它只發生在Mac OS中的應用程序之間切換,而不是iOS。我確實不知道原因。

2

誰在乎模擬器的功能,認真。讓它放屁的魔法邪惡的仙女劫持世界的金融體系,導致它進入一個崩潰的世界......哦,等等,也許它已經這樣做了。

儘管如此,看看使用代碼如AQGridView。它非常穩定,非常像tableview提供一個接口,並在許多項目中使用。你也避免了這條路線上的Three20的廢話。這是雙贏的。

但請記住,始終,我的意思是始終,關心你的應用在設備上做什麼,如果它在模擬器上沒有做同樣的事情,不要擔心,你不應該測試無論如何,99%的時間都是在SIM卡上。用戶在他們的設備上與您的應用進行交互,而不是您的模擬器。 :)

+0

感謝您的回覆。實際上,我並沒有進行水平滾動。我在照片應用程序中實現了「網格視圖」,如「照片列表」視圖,但未啓用水平滾動啓用的單張照片視圖。 – 2010-12-08 18:46:27

+0

啊,在這種情況下,我會編輯這個答案 – jer 2010-12-08 18:50:43