0

スクロールビューに多くの画像をロードするために使用するこの方法がありますが、URLから画像をロードすると、スクロールビューが動かなくなり、バックグラウンドでロードする方法がわからないため、ユーザーはそれを感じません。

このメソッドは、「for」サイクルで数回(8)呼び出します。

- (void)loadPhotosToLeftscroll{

    //getting image information from JSON
    NSMutableDictionary *photoDict;
    photoDict = [leftPhotoArray lastObject];

    //getting the photo
    NSString *photoPath = [photoDict objectForKey:@"photos_path"];
    NSLog(@"photo Path:%@",photoPath);


    NSData * imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:photoPath]];    

            UIImage *image = [UIImage imageWithData:imageData];
            // use the image how you like, say, as your button background

            //calculating the hight of next photo
            UIImageView *leftImage = [leftBlockScroll.subviews lastObject];

            //allocating photoView
            UIImageView *photoView = [[UIImageView alloc]initWithFrame:CGRectMake(5 , leftImage.frame.origin.y + leftImage.frame.size.height+5, image.size.width/2, image.size.height/2 )];
            photoView.userInteractionEnabled=YES;
            [photoView.layer setMasksToBounds:YES];
            [photoView.layer setCornerRadius:3];


            //getting items list
            NSDictionary *sh_items = [photoDict objectForKey:@"items"];

            //adding image button
            UIButton *imageOverButton = [UIButton buttonWithType:UIButtonTypeCustom];
            imageOverButton.frame = CGRectMake(0, 0, photoView.frame.size.width, photoView.frame.size.height);
            [imageOverButton addTarget:self action:@selector(LeftimagePressed:) forControlEvents:UIControlEventTouchUpInside];
            [imageOverButton setTag:[leftPhotoArray count]-1];
            [photoView addSubview:imageOverButton];

            //adding sh button to imageView
            [self addThe_sh_signs:sh_items To_ImageView:photoView];

            //subViewing the image to the scrollView
            [self insert_Image:image toImageView:photoView in_Scroll:leftBlockScroll];

            //calclulating the position of next imageView in scroll.
            nextLeftPhotoHight = photoView.frame.size.height + photoView.frame.origin.y + 5;

            //calculating the hight of the highest scroll view in both.
            leftBlockScroll.contentSize = CGSizeMake(160, [self theSizeOfScrollViewHight]);
            rightBlocScroll.contentSize = CGSizeMake(160, [self theSizeOfScrollViewHight]);
            isLoadindContant = NO;
            [self.view reloadInputViews];
            [leftBlockScroll reloadInputViews];

}

非同期の使用方法を説明しようとしているリンクに私を送らないでください。ここに表示されている方法に従って説明してください。 あなたが私を助けるために尋ねる必要がある質問のためにここにいます。

4

1 に答える 1

2

適切な方法で非同期に行う必要があります。それを回避する方法はないと思います。UIImageView オブジェクトをサブクラス化し、その多くのインスタンスを talbe のセル内 (この場合はスクロール ビュー内) に配置しました。サブクラス オブジェクトは URL で初期化され、画像を非同期的に読み込みます (画像が毎回読み込まれないようにキャッシュを使用します)。

このチュートリアルは、最初は大いに役立ちました: http://www.markj.net/iphone-asynchronous-table-image/

それをスクロールビューに採用するだけです。基礎となる原則は同じままです。

于 2012-06-27T16:00:22.987 に答える