0

たくさんのUIButtonを備えたUITableViewがあります。ボタンに表示される大きなローカル画像。このコードを使用して、大きな画像の非同期(UIButtonのカテゴリ)を読み込みます。

- (void)asyncLoadImageAtPath:(NSString *)fullPath forState:(UIControlState)state
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        UIImage *image = [[UIImage alloc] initWithContentsOfFile:fullPath];
        dispatch_async(dispatch_get_main_queue(), ^{
            [self setImage:image forState:state];
        });
    });
}

initWithContentsOfFile:他のスレッドで実行され、メインスレッドでsetImage:forState:によってUIを更新します。ただし、setImage:forState:は時間がかかりすぎるため、UITableViewのスクロールがスムーズになりません。

では、UIImageViewまたはUIButtonのUI非同期を更新する方法はありますか?

特別な感謝!

4

2 に答える 2

1

AsyncImageViewを使用する非同期画像の場合、tableViewsで正常に機能します

于 2012-10-16T07:39:32.300 に答える
1

SDWebImageを確認してください。このライブラリは、Web からのリモート イメージをサポートする UIImageView のカテゴリを提供します。

于 2012-10-16T07:37:30.180 に答える