2010-12-08 16 views
0

iOSの元の写真アプリに似たビューを実装します。UITableViewCell(iPhone)のUIButtonに関する厄介なパフォーマンスの問題

4 UIButtonを持つカスタマイズされたUITableViewCellを作成しました。また、セルの画像配列が変更されたときにボタンの画像を更新します。

私はパフォーマンスを本当に満足させるために努力しました。しかし、私はそれについて厄介な遅れの問題を発見した。

通常私のアプリを使用すると、スクロールは非常にスムーズでラグはありません。しかし、アプリ(シミュレータ)を「サムネイルグリッドビュー」上で実行し、Mac OSの他のアプリケーションに切り替えるとします。しばらくして(約1分)、シミュレータに戻ると、スクロール・ビューが止まってしまいます。それをスクロールするのは難しいです。別のビューに切り替える何かをクリックしてスイッチバックすると、すべてがスムーズになります。とてもトリッキーです。

Iはまた、グリッドビューを実装するためにthree20を使用TTRemoteExamplesを試みました。また、Mac OS(iOSではなく)のさまざまなアプリケーション間で切り替えた後には固まってしまいます。

私はカスタマイズされたセルをUIButtonではなく4つのイメージで塗りつぶしてみました。それは立ち往生しなかった。だから多分UITableViewCellとUIButtonの間の競合には理由がありますか?

私は(私がテストするデバイスを持っていない)、それが唯一のシミュレータ上で発生したかどうかを知りまたはデバイスに出荷時に潜在的なパフォーマンスの問題はありません。

Appleの写真アプリは決してこのようにはなりません。

だから私は、問題がのUITableViewのメカニズムによって引き起こされるかどうかを確認するために自分でUIScrollViewのから、それを実装するつもりです。私はまだ誰かがそれに来てそれを解決すれば、遅れの理由を知りたいです。

私の貧しい英語のために申し訳ありませんが、私はあなたが私の意味をキャッチすることを願っています。

答えて

0

がにSubclassing UITableViewCellセクションを参照して、 は、私は最終的にUITableViewCellにサブビューを追加することなく、ガイドからの道を模倣する私のカスタムを実装することで問題を解決しました。

どうやら、あまりにも多くのサブビューを追加し、わずか4けれども私のコードでは、私は上記の奇妙な問題を引き起こしました。だから、UITableViewCellまたはUITableViewCellのcontentViewに、特にUIImageViewがあるものはサブビューを追加しないでください。

代わりに、-[UIImage drawAtPoint:]-[NSString drawAtPoint:withFont:]を使用して、カスタマイズされたUITableViewCell内のデータのを維持し、drawRect内のすべての描画関連のことを行います。

実際、アップルのガイドではそれについて言及しています。私の不注意な部分をスキミングしています。

しかし、私が言及したように、MacOS(iOSではなく)のアプリケーション間を切り替えるときにのみ、なぜ発生するのか不思議です。私は本当にその理由を知らない。

+0

さらに、touchesBegan:withEvent: 'でタッチイベントをキャッチし、' [event locationInView:theView] 'で演算によってどのグリッドが押されたのか把握してください。 –

+0

実際には、不透明でないサブビューを追加しようとしていない限り、カスタム図面は必要ありません。不透明なサブビューを追加すると、パフォーマンスの問題の多くが大幅に最小限に抑えられます。 – jer

+0

うん、私はすべてのサブビューを不透明に設定しますが、パフォーマンスは悪くありません。私が会った問題は、必ずしもそうではないので、説明するのは難しいです。多分、私が言及した 'TTRemoteExamples'を実行して、私が言ったことをやってみることができます(' grid list of image'ビューに留まり、シミュレータと他のアプリケーションを切り替えて、その後、遅れが発生する可能性があります。 –

2

人は、シミュレータが真剣にやっていることを気にしています。世界の金融システムを乗っ取って、崩壊の世界に入ってしまう魔法の邪悪な妖精を放つようにしましょう...ああ待ってください、それはすでにそれをしたかもしれません。

冗談はさておき、AQGridViewのようなコードを使用して見てください。これは非常に安定しており、テーブルビューのようなインターフェイスを提供し、多くのプロジェクトで使用されています。あなたはまた、このルートに行くThree20であるナンセンスを避ける。それは勝利です。

でも、私はいつも気を付けていますが、あなたのアプリがデバイス上で何をしているか心配しています。もしシミュレータで同じことをやっていなければ、心配しないでください。とにかく時間の99%のシムで。ユーザーは、シミュレータではなく、デバイス上でアプリとやり取りします。 :)

+0

返信いただきありがとうございます。実際、私は水平スクロールをしていません。私は写真アプリの '写真リスト'ビューのように 'グリ​​ッドビュー'を実装していますが、水平スクロールでは1枚の写真を表示できません。 –

+0

ああ、その場合、私はこの答えを編集します – jer

関連する問題