0

scrollView のサブビューに画像を追加していますが、特定のカスタム クラスにのみ追加していAsyncImageViewます。多くのサブビューがあり、アプリケーションがスムーズなスクロールを失っているため、これには時間がかかります。

NSArray *subviewsArray = [[NSArray alloc] initWithArray:[scrollView subviews]];
        for (int j = 0; j < [subviewsArray count]; j++) {
            for (AsyncImageView *checkView in [[subviewsArray objectAtIndex:j] subviews]) {
                if ([checkView isKindOfClass:[AsyncImageView class]]) {
                       [[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:checkView];

                        NSString* urlTextEscaped = [[imageInfo objectAtIndex:0] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

                        NSURL *URL = [NSURL URLWithString:urlTextEscaped];
                        if (URL)
                        {
                            checkView.imageURL = URL;
                        }
                        else
                        {
                            NSURL *defaultURL = [NSURL URLWithString:@"http://www.domain.com/user_avatar_default.jpg"];
                            checkView.imageURL = defaultURL;

                        }
                    }
                 }
               }

必要なビューにアクセスして画像を追加するより良い方法はありますか? 私が考えていない他のいくつかのロジック。

これは scrollView の階層です

                                           scrollView
                                                |
                                                |
                                           MaseterView
                                                |
                                                |
                         AsyncImageView  -   TitleView - OtherImageView
4

2 に答える 2

0

反復する前に、スクロール ビューのサブビューで新しい配列を作成する必要はありません。2 つの一般的なオプションがあります。

A. まだループしていますが、あなたが行ったわけではありません。単一の画像ビューがある場合、または個別に更新する複数の画像ビューがある場合にのみ意味があります。

画像ビューのタグを設定してから使用します[scrollView viewWithTag:...];

B. 複数の画像ビューがあり、それらすべてを同時に更新したい場合。

可変配列プロパティを保持し、作成時に画像ビューを追加します。

その他の考慮事項:

  1. すべての画像ビューを更新する必要がありますか? それらはすべて表示されていますか?
  2. スクロールビューのスクロールを観察し、画像が表示されているときにのみ画像の読み込みを開始できますか (スクロールされて表示されなくなったときに不完全な読み込みをキャンセルします)?
于 2013-06-03T08:53:07.653 に答える
0

使用できます

UIView *v = [self.containerView viewWithTag:uniqueTagvalue];

必要なビューに一意のタグ値を設定して取得します

于 2013-06-03T08:53:25.017 に答える