1

uiscrollview低解像度の画像の配列を送信することがあります。スクロールビューがスクロールすると、現在のページを確認し+/-1、低解像度の画像を別の配列の高解像度の画像に置き換える必要があります。私のコードALMOSTはこれを完璧に行います。

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
pageCOntrolBeingUsed = NO;

//calculate the current page that is shown

CGFloat pageWidth = self.uis_valueScrollview.frame.size.width;
    int page = floor((self.uis_valueScrollview.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    self.uis_valuePageControl.currentPage = page;
    NSLog(@"page %i",page);

    // display the image and +/-1 for smoother scrolling

        CGRect frame;
        frame.origin.x = self.uis_valueScrollview.frame.size.width * page;
        frame.origin.y = 0;
        frame.size = self.uis_valueScrollview.frame.size;

        UIImageView *subview = [[UIImageView alloc] initWithFrame:frame];
        [subview setContentMode:UIViewContentModeScaleAspectFit];
        subview.image = [ebappdelegate.arr_highRezImages objectAtIndex:page];
        subview.tag = page+1;
        [self.uis_valueScrollview addSubview:subview];

     //remove image views except -1 and +1 of the current page

    for ( int i = 0; i < [ebappdelegate.arr_ValueImages count]; i++ ) {
          if ( (i < (page-1) || i > (page+1)) && [uis_valueScrollview viewWithTag:(i+1)] ) {
            [[uis_valueScrollview viewWithTag:(i+1)] removeFromSuperview];
              [[uis_valueScrollview viewWithTag:(i-1)] removeFromSuperview];
             [(UIImageView*)[uis_valueScrollview viewWithTag:page] setImage:[ebappdelegate.arr_lowrezImages objectAtIndex:page]];
            subview.tag = page+1;
            [self.uis_valueScrollview addSubview:subview];
            NSLog(@"remove");
        }
    }

}

したがって、現在、関数(ここではありません)は、lowrez画像の配列を事前にロードします。スクロールすると、highrez配列へのアクセスを許可します。画像がスクロールオフし(+/-1)たら、高解像度を低解像度に置き換えたいと思います。

これは実行されますが、追加の画像ビューが作成されることがあります(ログに記録uiimageview iskindofclassすると、配列の数よりも多い数が上下に移動するため、追加が作成され、削除されていないことがわかります。

ポインタはありますか?これはこれを行うのに良い方法であり、非常に近いと思いますが、アドバイスも必要です。

4

2 に答える 2

1

コードに問題はありません。あなたは物事を完璧にやり遂げました。あなたが見つけている増加したカウントは、インジケーター画像によるものです。

UIScrollViewクラスには、水平および垂直のスクロールインジケーターと影が含まれています。これらのメンバーはタイプUIImageViewです。したがって、UIImageViewクラスをログに記録している間、これらの3つのサブビューもカウントされます。

于 2013-02-27T05:05:52.270 に答える
0

それがあなたが探しているものだと思いますhttp://developer.apple.com/library/ios/#samplecode/ScrollViewSuite/Listings/3_Tiling_Classes_TiledScrollView_m.html

それはあなたが探していることを正確に行うアップルのデモアプリケーションです...

于 2013-02-26T17:08:17.627 に答える