0

が呼び出されたときに +2 と -2 に配置された SubViews が生成される UIScrollView アルバムを実装しましたscrollViewDidEndDraggingが、Subviews の追加はコストのかかる操作であるため、スライドスルーはあまりスムーズではありません。ドラッグの最後に画面が少しくっつきます。NSTimerorを使用して遅延呼び出しを試みたこともperformSelectorありますが、ユーザーがすべての画像を高速で移動すると、すべての遅延呼び出しが一度に呼び出され、アプリケーションがクラッシュすることがあります。

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    flyNumber = (NSInteger)(imageScrollView.contentOffset.x/imageScrollView.frame.size.width);
    [self createM2P2SubView];

    //[self performSelector:@selector(createM2P2SubView) withObject:nil afterDelay:0.1];
    //[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(createM2P2SubView) userInfo:nil repeats:NO];

    NSLog(@"End dragging   ...... %d",flyNumber);
}

そのグリッチを取り除くための解決策を提供してください。

4

1 に答える 1

1

ビューの作成はコストのかかる操作ですが、基本的にはテーブル ビューが行うことです。新しいセルが画面に表示されると動的にビューを作成し、作成にコストがかかるためビューを再利用します。

時間プロファイラーとアニメーション プロファイラーを使用してコードのプロファイリングを試み、ボトルネックを見つけます。

+2/-2 オフセットで挿入しているビューを再利用して速度を上げてみてください。

また、自己管理型の UIScrollView の代わりに UITableView を使用するという巧妙なトリックもあります。水平にする必要がある場合は、テーブル ビューに回転変換を適用するだけです。

アルバムという言葉がタイトルだとおっしゃっていたので、ビューごとに読み込んで表示する必要がある画像があると思いますか? 画像の読み込みを同期にするのではなく、非同期にして、スピナーなどを使用してアルバム画像の読み込み状態のインジケーターを提供します。

于 2012-09-16T18:18:18.277 に答える