0

スクロールビューで 1000 ビューを作成しています。これにより、ビューの読み込みに時間がかかります。

wordsDetails *wordsObj;
for(int i = 0; i<arrayOfWords.count;i++) {
    UIView *viewForDisplay = [[UIView alloc]initWithFrame:CGRectMake(320*i, 0, 320, 440)];
    UILabel *wordLabel = [[UILabel alloc]initWithFrame:CGRectMake(30, 40, 240, 40)];
    wordLabel.backgroundColor = [UIColor clearColor];
    wordLabel.textColor = [UIColor yellowColor];
    wordLabel.font = [UIFont fontWithName:@"Didot" size:24.0];
    wordsObj = [arrayOfWords objectAtIndex:i];
    wordLabel.text = wordsObj.word;//[NSString stringWithFormat:@"sdssds - %i",i];
    [viewForDisplay addSubview:wordLabel];

    UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(30, 100, 240, 100)];
    textView.text  = wordsObj.meaning;
    textView.editable = NO;
    textView.textColor = [UIColor whiteColor];
    textView.font = [UIFont fontWithName:@"Didot" size:20.0];
    textView.backgroundColor = [UIColor clearColor];
    [viewForDisplay addSubview:textView];
    [fScrollView addSubview:viewForDisplay];
}

これをスレッドで呼び出す方法はありますか。

4

2 に答える 2

1

スクロールビューで 1000 ビューを作成しています。

そうしないでください。ユーザーは一度に 1000 個のビューを使用することはできないため、一度に作成しないでください。WWDC 2010、2011、および 2012 には、スクロール ビューでのコンテンツのタイリングについて説明した優れたビデオがいくつかあります。すばらしいアイデアについては、それらをご覧ください。

スクロール ビュー デリゲートは、スクロール ビューのコンテンツが移動するときにメッセージを受け取ります。これらのメッセージを使用して、コンテンツが画面にスクロールするのにちょうど間に合うようにコンテンツを追加し、スクロール オフ後にコンテンツを削除できます。これは基本的に UITableView と UICollectionView が行うことであり、jrturton が提案するようにどちらかを使用することも、同じパターンを自分でたどることもできます。

これにより、スクロール ビューの作成が高速化されるだけでなく、スクロールがスムーズになり、他の方法よりもはるかに少ないメモリを消費します。

于 2013-07-01T06:12:58.493 に答える