2

uitableviewにカスタムセルクラスを使用し、cellForRowAtIndexPathメソッドで使用しました。

そのメソッドでは、cellIdentifierがすでに定義されており、セルのプロパティでさえdequeueReusableとして使用されます。

ただし、カスタムセルオブジェクトが作成され、そのメソッドが呼び出されるたびにテーブルビューをスクロールしている間。そのため、デバイス上では、スクロールはぎくしゃくした効果をもたらします。

また、if(cell == nil)を確認し、その内部で、そのカスタムセルに画像とラベルのプロパティを割り当てています。しかし、毎回、この条件は真になり、プログラムポインタはその条件の中に入る。

これについて教えてください。

可能であれば、サンプルコードを提供してください。

前もって感謝します

ムルナル。

4

3 に答える 3

15

私はかなり複雑UITableViewCellです。私にとっての秘訣はshouldRasterize、セルレイヤーのをに設定することでしたYES。しかし、それはぼやけたテキストを導入しました。それを避けるために、私はスケールを設定しました- [self.layer setRasterizationScale:[[UIScreen mainScreen] scale]]

于 2013-09-06T15:32:01.343 に答える
13

他の多くの人が指摘しているように、コードを投稿しない限り、私たちは本当にあなたを助けることはできません(あなたのCellForRowAtIndexPathで十分なはずです)。

一般的に言って、UITableViewsのスクロールパフォーマンスを改善する方法はたくさんあります。私が使用する上位の方法は次のとおりです(他のStack Overflowの回答で使用されています)。

  1. 常にセルを再利用し、新しいセルを作成するときはdequeuereusablecellwithidentifierを使用します。これにより、高速スクロール時にOSが多数のオブジェクトを作成および破棄するオーバーヘッドを防ぐことができます。

  2. セルのビュー階層を折りたたみます。多数のビューとサブビューを用意する代わりに、カスタムビューを作成し、drawRectですべてのセルの描画を行います。Twitterのようなアプリは、このアプローチを使用して超高速のセル描画を行います。

  3. 画像が不透明であることを確認してください。これを行うには、すべての画像アセットにアルファチャンネルがベイクされていないことを確認し、レイヤーの不透明プロパティをYESに設定します。

  4. セル画像のレイヤープロパティのプロパティ(影や角の丸い長方形など)を設定している場合、これはスクロールのパフォーマンスに影響を与える可能性があります。レイヤーのshouldRasterizeをYESに設定すると役立ちますが、セル内で集中的な描画操作を行うことについては、真剣に考える必要があります。

詳細については、http://developer.apple.com/library/ios/#samplecode/TableViewSuite/Introduction/Intro.html%23//apple_ref/doc/uid/DTS40007318-Intro-DontLinkElementID_2を参照してください。

于 2011-08-27T09:17:50.440 に答える
1

これは、ImageViewが原因で発生しています。if(cell == nil)UITableViewの内側にラベルとimageViewを作成し、CellAtIndexPathMehtodifの外側にその値を割り当てます。

また、画像がサーバーから読み込まれている場合は、非同期画像読み込みを使用してください

于 2011-08-27T07:57:52.843 に答える