0

を使用してニュースフィードリストテーブルを構築していUITableViewます。カスタムクラス

内のサンプルコードUITableViewCell

-(void)drawRect:(CGRect)rect 
{
    UIView *bgView = [[UIView alloc] initWithFrame:self.bounds];
    bgView.backgroundColor = [UIColor whiteColor];

    bgView.layer.shadowColor = [UIColor blackColor].CGColor;
    bgView.layer.shadowOffset = CGSizeMake(0, 1);
    bgView.layer.shadowOpacity = 0.2;
    bgView.layer.shadowRadius = 1;

    self.backgroundView = bgView;
    [bgView release];
}

アプリ、スクロールをテストするとUITableView、スクロールのパフォーマンスが悪い! 影を取り除けば、パフォーマンスは良いです!

あなたのアドバイスが必要です。最高のパフォーマンスを得るために、どのような最適化を行うことができますか?

4

2 に答える 2

2

あなたの問題はObjective-Cではなく影です!iOS 3.2ではシャドウのを定義できるため、CGPathRefレンダリング時間を短縮してパフォーマンスを向上させるために、ビューのアウトラインのみを含むシャドウを作成する必要があります。シャドウをラスタライズして、常に再描画しないようにすることもできます(レイヤーのshouldRasterizeプロパティをに設定しますYES。レイヤーで何をしたいかによっては、これは見栄えの良いオプションではない場合があります。また、メモリ/パフォーマンスもあります。トレードオフ、それを覚えておいてください!)。

必要なシャドウパスを作成する最も簡単な方法UIBezierPathは、さまざまな形成されたオブジェクトを作成するための便利なクラスメソッドが多数あるクラスを使用することCGPathRefですが、ビューの形状によっては、フォールバックして独自のパスを作成する必要がある場合があります。手。

于 2012-08-06T05:50:45.267 に答える
0

UITableViewデリゲートをどのように実装しますか? UITableViewCell次のような再利用を使用して作成しましたか。


-[UITableView dequeueReusableCellWithIdentifier:]

これをチェックしてください。

于 2012-08-06T06:11:01.713 に答える